本文整理汇总了C++中Graphics_setInner函数的典型用法代码示例。如果您正苦于以下问题:C++ Graphics_setInner函数的具体用法?C++ Graphics_setInner怎么用?C++ Graphics_setInner使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Graphics_setInner函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: Formant_drawTracks
void Formant_drawTracks (Formant me, Graphics g, double tmin, double tmax, double fmax, int garnish) {
long itmin, itmax, ntrack = Formant_getMinNumFormants (me);
if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
if (! Sampled_getWindowSamples (me, tmin, tmax, & itmin, & itmax)) return;
Graphics_setInner (g);
Graphics_setWindow (g, tmin, tmax, 0.0, fmax);
for (long itrack = 1; itrack <= ntrack; itrack ++) {
for (long iframe = itmin; iframe < itmax; iframe ++) {
Formant_Frame curFrame = & my d_frames [iframe], nextFrame = & my d_frames [iframe + 1];
double x1 = Sampled_indexToX (me, iframe), x2 = Sampled_indexToX (me, iframe + 1);
double f1 = curFrame -> formant [itrack]. frequency;
double f2 = nextFrame -> formant [itrack]. frequency;
if (NUMdefined (x1) && NUMdefined (f1) && NUMdefined (x2) && NUMdefined (f2))
Graphics_line (g, x1, f1, x2, f2);
}
}
Graphics_unsetInner (g);
if (garnish) {
Graphics_drawInnerBox (g);
Graphics_textBottom (g, 1, U"Time (s)");
Graphics_textLeft (g, 1, U"Formant frequency (Hz)");
Graphics_marksBottom (g, 2, 1, 1, 0);
Graphics_marksLeftEvery (g, 1.0, 1000.0, 1, 1, 1);
}
}
开发者ID:psibre,项目名称:praat,代码行数:25,代码来源:Formant.cpp
示例2: TableOfReal_drawAsNumbers
void TableOfReal_drawAsNumbers (TableOfReal me, Graphics graphics, long rowmin, long rowmax, int iformat, int precision) {
fixRows (me, & rowmin, & rowmax);
Graphics_setInner (graphics);
Graphics_setWindow (graphics, 0.5, my numberOfColumns + 0.5, 0, 1);
double leftMargin = getLeftMargin (graphics); // not earlier!
double lineSpacing = getLineSpacing (graphics); // not earlier!
double maxTextWidth = getMaxRowLabelWidth (me, graphics, rowmin, rowmax);
double maxTextHeight = getMaxColumnLabelHeight (me, graphics, 1, my numberOfColumns);
Graphics_setTextAlignment (graphics, Graphics_CENTRE, Graphics_BOTTOM);
for (long icol = 1; icol <= my numberOfColumns; icol ++) {
if (my columnLabels && my columnLabels [icol] && my columnLabels [icol] [0])
Graphics_text (graphics, icol, 1, my columnLabels [icol]);
}
for (long irow = rowmin; irow <= rowmax; irow ++) {
double y = 1 - lineSpacing * (irow - rowmin + 0.6);
Graphics_setTextAlignment (graphics, Graphics_RIGHT, Graphics_HALF);
if (my rowLabels && my rowLabels [irow] && my rowLabels [irow] [0])
Graphics_text (graphics, 0.5 - leftMargin, y, my rowLabels [irow]);
Graphics_setTextAlignment (graphics, Graphics_CENTRE, Graphics_HALF);
for (long icol = 1; icol <= my numberOfColumns; icol ++) {
wchar_t text [40];
print4 (text, my data [irow] [icol], iformat, 0, precision);
Graphics_text (graphics, icol, y, text);
}
}
if (maxTextHeight) {
double left = 0.5;
if (maxTextWidth > 0.0) left -= maxTextWidth + 2 * leftMargin;
Graphics_line (graphics, left, 1, my numberOfColumns + 0.5, 1);
}
Graphics_unsetInner (graphics);
}
开发者ID:arizona-phonological-imaging-lab,项目名称:ultrapraat,代码行数:33,代码来源:TableOfReal.cpp
示例3: cellArrayOrImage
static void cellArrayOrImage (Matrix me, Graphics g, double xmin, double xmax, double ymin, double ymax,
double minimum, double maximum, bool interpolate)
{
if (xmax <= xmin) { xmin = my xmin; xmax = my xmax; }
if (ymax <= ymin) { ymin = my ymin; ymax = my ymax; }
long ixmin, ixmax, iymin, iymax;
(void) Matrix_getWindowSamplesX (me, xmin - 0.49999 * my dx, xmax + 0.49999 * my dx,
& ixmin, & ixmax);
(void) Matrix_getWindowSamplesY (me, ymin - 0.49999 * my dy, ymax + 0.49999 * my dy,
& iymin, & iymax);
if (maximum <= minimum)
(void) Matrix_getWindowExtrema (me, ixmin, ixmax, iymin, iymax, & minimum, & maximum);
if (maximum <= minimum) { minimum -= 1.0; maximum += 1.0; }
if (xmin >= xmax || ymin >= ymax) return;
Graphics_setInner (g);
Graphics_setWindow (g, xmin, xmax, ymin, ymax);
if (interpolate)
Graphics_image (g, my z,
ixmin, ixmax, Sampled_indexToX (me, ixmin - 0.5), Sampled_indexToX (me, ixmax + 0.5),
iymin, iymax, SampledXY_indexToY (me, iymin - 0.5), SampledXY_indexToY (me, iymax + 0.5),
minimum, maximum);
else
Graphics_cellArray (g, my z,
ixmin, ixmax, Sampled_indexToX (me, ixmin - 0.5), Sampled_indexToX (me, ixmax + 0.5),
iymin, iymax, SampledXY_indexToY (me, iymin - 0.5), SampledXY_indexToY (me, iymax + 0.5),
minimum, maximum);
Graphics_rectangle (g, xmin, xmax, ymin, ymax);
Graphics_unsetInner (g);
}
开发者ID:DsRQuicke,项目名称:praat,代码行数:29,代码来源:Matrix.cpp
示例4: Formant_scatterPlot
void Formant_scatterPlot (Formant me, Graphics g, double tmin, double tmax,
int iformant1, double fmin1, double fmax1, int iformant2, double fmin2, double fmax2,
double size_mm, const char32 *mark, int garnish)
{
if (iformant1 < 1 || iformant2 < 1) return;
if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
long itmin, itmax;
if (! Sampled_getWindowSamples (me, tmin, tmax, & itmin, & itmax)) return;
if (fmax1 == fmin1)
Formant_getExtrema (me, iformant1, tmin, tmax, & fmin1, & fmax1);
if (fmax1 == fmin1) return;
if (fmax2 == fmin2)
Formant_getExtrema (me, iformant2, tmin, tmax, & fmin2, & fmax2);
if (fmax2 == fmin2) return;
Graphics_setInner (g);
Graphics_setWindow (g, fmin1, fmax1, fmin2, fmax2);
for (long iframe = itmin; iframe <= itmax; iframe ++) {
Formant_Frame frame = & my d_frames [iframe];
if (iformant1 > frame -> nFormants || iformant2 > frame -> nFormants) continue;
double x = frame -> formant [iformant1]. frequency;
double y = frame -> formant [iformant2]. frequency;
if (x == 0.0 || y == 0.0) continue;
Graphics_mark (g, x, y, size_mm, mark);
}
Graphics_unsetInner (g);
if (garnish) {
Graphics_drawInnerBox (g);
Graphics_textBottom (g, 1, Melder_cat (U"%%F_", iformant1, U" (Hz)"));
Graphics_textLeft (g, 1, Melder_cat (U"%%F_", iformant2, U" (Hz)"));
Graphics_marksBottom (g, 2, 1, 1, 0);
Graphics_marksLeft (g, 2, 1, 1, 0);
}
}
开发者ID:psibre,项目名称:praat,代码行数:33,代码来源:Formant.cpp
示例5: Minimizer_drawHistory
void Minimizer_drawHistory (Minimizer me, Graphics g, long iFrom, long iTo, double hmin, double hmax, int garnish) {
if (! my history) {
return;
}
if (iTo <= iFrom) {
iFrom = 1; iTo = my iteration;
}
long itmin = iFrom, itmax = iTo;
if (itmin < 1) {
itmin = 1;
}
if (itmax > my iteration) {
itmax = my iteration;
}
if (hmax <= hmin) {
NUMvector_extrema (my history, itmin, itmax, & hmin, & hmax);
}
if (hmax <= hmin) {
hmin -= 0.5 * fabs (hmin);
hmax += 0.5 * fabs (hmax);
}
Graphics_setInner (g);
Graphics_setWindow (g, iFrom, iTo, hmin, hmax);
Graphics_function (g, my history, itmin, itmax, itmin, itmax);
Graphics_unsetInner (g);
if (garnish) {
Graphics_drawInnerBox (g);
Graphics_textBottom (g, true, U"Number of iterations");
Graphics_marksBottom (g, 2, true, true, false);
Graphics_marksLeft (g, 2, true, true, false);
}
}
开发者ID:jjatria,项目名称:praat,代码行数:32,代码来源:Minimizers.cpp
示例6: Matrix_drawSliceY
void Matrix_drawSliceY (Matrix me, Graphics g, double x, double ymin, double ymax, double min, double max) {
if (x < my xmin || x > my xmax) {
return;
}
long ix = Matrix_xToNearestColumn (me, x);
if (ymax <= ymin) {
ymin = my ymin;
ymax = my ymax;
}
long iymin, iymax;
long ny = Matrix_getWindowSamplesY (me, ymin, ymax, &iymin, &iymax);
if (ny < 1) {
return;
}
if (max <= min) {
Matrix_getWindowExtrema (me, ix, ix, iymin, iymax, &min, &max);
}
if (max <= min) {
min -= 0.5; max += 0.5;
}
autoNUMvector<double> y (iymin, iymax);
Graphics_setWindow (g, ymin, ymax, min, max);
Graphics_setInner (g);
for (long i = iymin; i <= iymax; i++) {
y[i] = my z[i][ix];
}
Graphics_function (g, y.peek(), iymin, iymax, Matrix_rowToY (me, iymin), Matrix_rowToY (me, iymax));
Graphics_unsetInner (g);
}
开发者ID:PaulBoersma,项目名称:praat,代码行数:35,代码来源:Matrix_extensions.cpp
示例7: Polygon_paint
void Polygon_paint (Polygon me, Graphics g, Graphics_Colour colour, double xmin, double xmax, double ymin, double ymax) {
Graphics_setInner (g);
setWindow (me, g, xmin, xmax, ymin, ymax);
Graphics_setColour (g, colour);
Graphics_fillArea (g, my numberOfPoints, & my x [1], & my y [1]);
Graphics_unsetInner (g);
}
开发者ID:psibre,项目名称:praat,代码行数:7,代码来源:Polygon.cpp
示例8: Transition_drawAsNumbers
void Transition_drawAsNumbers (I, Graphics g, int iformat, int precision) {
iam (Transition);
double maxTextWidth = 0, maxTextHeight = 0;
Graphics_setInner (g);
Graphics_setWindow (g, 0.5, my numberOfStates + 0.5, 0, 1);
double leftMargin = Graphics_dxMMtoWC (g, 1);
double lineSpacing = Graphics_dyMMtoWC (g, 1.5 * Graphics_inqFontSize (g) * 25.4 / 72);
Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_BOTTOM);
for (long col = 1; col <= my numberOfStates; col ++) {
if (my stateLabels && my stateLabels [col] && my stateLabels [col] [0]) {
Graphics_text (g, col, 1, my stateLabels [col]);
if (! maxTextHeight) maxTextHeight = lineSpacing;
}
}
for (long row = 1; row <= my numberOfStates; row ++) {
double y = 1 - lineSpacing * (row - 1 + 0.7);
Graphics_setTextAlignment (g, Graphics_RIGHT, Graphics_HALF);
if (my stateLabels && my stateLabels [row]) {
double textWidth = Graphics_textWidth (g, my stateLabels [row]);
if (textWidth > maxTextWidth) maxTextWidth = textWidth;
Graphics_text (g, 0.5 - leftMargin, y, my stateLabels [row]);
}
Graphics_setTextAlignment (g, Graphics_CENTRE, Graphics_HALF);
for (long col = 1; col <= my numberOfStates; col ++) {
wchar text [40];
print4 (text, my data [row] [col], iformat, 0, precision);
Graphics_text (g, col, y, text);
}
}
if (maxTextWidth)
Graphics_line (g, 0.5 - maxTextWidth - leftMargin, 1, my numberOfStates + 0.5, 1);
if (maxTextHeight)
Graphics_line (g, 0.5, 1 + maxTextHeight, 0.5, 1 - lineSpacing * (my numberOfStates + 0.2));
Graphics_unsetInner (g);
}
开发者ID:georgiee,项目名称:lip-sync-lpc,代码行数:35,代码来源:Transition.cpp
示例9: TextGrid_Pitch_draw
void TextGrid_Pitch_draw (TextGrid grid, Pitch pitch, Graphics g,
long tierNumber, double tmin, double tmax, double fmin, double fmax,
double fontSize, int useTextStyles, int horizontalAlignment, int garnish, int speckle, int unit)
{
try {
TextGrid_checkSpecifiedTierNumberWithinRange (grid, tierNumber);
double oldFontSize = Graphics_inqFontSize (g);
Pitch_draw (pitch, g, tmin, tmax, fmin, fmax, garnish, speckle, unit);
if (tmax <= tmin) tmin = grid -> xmin, tmax = grid -> xmax;
autoPitchTier pitchTier = Pitch_to_PitchTier (pitch);
if (Function_isUnitLogarithmic (pitch, Pitch_LEVEL_FREQUENCY, unit)) {
fmin = Function_convertStandardToSpecialUnit (pitch, fmin, Pitch_LEVEL_FREQUENCY, unit);
fmax = Function_convertStandardToSpecialUnit (pitch, fmax, Pitch_LEVEL_FREQUENCY, unit);
}
Graphics_setTextAlignment (g, horizontalAlignment, Graphics_BOTTOM);
Graphics_setInner (g);
Graphics_setFontSize (g, fontSize);
Graphics_setPercentSignIsItalic (g, useTextStyles);
Graphics_setNumberSignIsBold (g, useTextStyles);
Graphics_setCircumflexIsSuperscript (g, useTextStyles);
Graphics_setUnderscoreIsSubscript (g, useTextStyles);
Function anyTier = (Function) grid -> tiers -> item [tierNumber];
if (anyTier -> classInfo == classIntervalTier) {
IntervalTier tier = (IntervalTier) anyTier;
for (long i = 1; i <= tier -> intervals -> size; i ++) {
TextInterval interval = (TextInterval) tier -> intervals -> item [i];
double tleft = interval -> xmin, tright = interval -> xmax, tmid, f0;
if (! interval -> text || ! interval -> text [0]) continue;
if (tleft < pitch -> xmin) tleft = pitch -> xmin;
if (tright > pitch -> xmax) tright = pitch -> xmax;
tmid = (tleft + tright) / 2;
if (tmid < tmin || tmid > tmax) continue;
f0 = Function_convertStandardToSpecialUnit (pitch, RealTier_getValueAtTime (pitchTier.peek(), tmid), Pitch_LEVEL_FREQUENCY, unit);
if (f0 < fmin || f0 > fmax) continue;
Graphics_text (g,
horizontalAlignment == Graphics_LEFT ? tleft : horizontalAlignment == Graphics_RIGHT ? tright : tmid,
f0, interval -> text);
}
} else {
TextTier tier = (TextTier) anyTier;
for (long i = 1; i <= tier -> points -> size; i ++) {
TextPoint point = (TextPoint) tier -> points -> item [i];
double t = point -> number, f0;
if (! point -> mark || ! point -> mark [0]) continue;
if (t < tmin || t > tmax) continue;
f0 = Function_convertStandardToSpecialUnit (pitch, RealTier_getValueAtTime (pitchTier.peek(), t), Pitch_LEVEL_FREQUENCY, unit);
if (f0 < fmin || f0 > fmax) continue;
Graphics_text (g, t, f0, point -> mark);
}
}
Graphics_setPercentSignIsItalic (g, TRUE);
Graphics_setNumberSignIsBold (g, TRUE);
Graphics_setCircumflexIsSuperscript (g, TRUE);
Graphics_setUnderscoreIsSubscript (g, TRUE);
Graphics_setFontSize (g, oldFontSize);
Graphics_unsetInner (g);
} catch (MelderError) {
Melder_throw (grid, " & ", pitch, ": not drawn.");
}
}
开发者ID:dellison,项目名称:APILPraat,代码行数:60,代码来源:TextGrid_Sound.cpp
示例10: CC_drawC0
void CC_drawC0 (I, Graphics g, double xmin, double xmax, double ymin,
double ymax, int garnish) {
iam (CC);
(void) garnish;
if (xmin >= xmax) {
xmin = my xmin; xmax = my xmax;
}
long bframe, eframe;
(void) Sampled_getWindowSamples (me, xmin, xmax, &bframe, &eframe);
autoNUMvector<double> c (bframe, eframe);
for (long i = bframe; i <= eframe; i++) {
CC_Frame cf = & my frame[i];
c[i] = cf -> c0;
}
if (ymin >= ymax) {
NUMvector_extrema (c.peek(), bframe, eframe, &ymin, &ymax);
if (ymax <= ymin) {
ymin -= 1.0;
ymax += 1.0;
}
} else {
NUMvector_clip (c.peek(), bframe, eframe, ymin, ymax);
}
Graphics_setInner (g);
Graphics_setWindow (g, xmin, xmax, ymin, ymax);
Graphics_function (g, c.peek(), bframe, eframe, xmin, xmax);
Graphics_unsetInner (g);
}
开发者ID:georgiee,项目名称:lip-sync-lpc,代码行数:30,代码来源:CC.cpp
示例11: FilterBank_paint
void FilterBank_paint (FilterBank me, Graphics g, double xmin, double xmax, double ymin, double ymax, double minimum, double maximum, int garnish) {
if (xmax <= xmin) {
xmin = my xmin; xmax = my xmax;
}
if (ymax <= ymin) {
ymin = my ymin; ymax = my ymax;
}
long ixmin, ixmax, iymin, iymax;
(void) Matrix_getWindowSamplesX (me, xmin - 0.49999 * my dx, xmax + 0.49999 * my dx, &ixmin, &ixmax);
(void) Matrix_getWindowSamplesY (me, ymin - 0.49999 * my dy, ymax + 0.49999 * my dy, &iymin, &iymax);
if (maximum <= minimum) {
(void) Matrix_getWindowExtrema (me, ixmin, ixmax, iymin, iymax, &minimum, &maximum);
}
if (maximum <= minimum) {
minimum -= 1.0; maximum += 1.0;
}
if (xmin >= xmax || ymin >= ymax) {
return;
}
Graphics_setInner (g);
Graphics_setWindow (g, xmin, xmax, ymin, ymax);
Graphics_image (g, my z,
ixmin, ixmax, Sampled_indexToX (me, ixmin - 0.5), Sampled_indexToX (me, ixmax + 0.5),
iymin, iymax, SampledXY_indexToY (me, iymin - 0.5), SampledXY_indexToY (me, iymax + 0.5),
minimum, maximum);
Graphics_unsetInner (g);
if (garnish) {
Graphics_drawInnerBox (g);
Graphics_marksLeft (g, 2, 1, 1, 0);
Graphics_textLeft (g, 1, GetFreqScaleText (my v_getFrequencyScale ()));
Graphics_marksBottom (g, 2, 1, 1, 0);
Graphics_textBottom (g, 1, U"Time (s)");
}
}
开发者ID:psibre,项目名称:praat,代码行数:35,代码来源:FilterBank.cpp
示例12: FormantFilter_drawFilterFunctions
void FormantFilter_drawFilterFunctions (FormantFilter me, Graphics g, double bandwidth,
int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax,
int dbScale, double ymin, double ymax, int garnish) {
if (! checkLimits (me, FilterBank_HERTZ, toFreqScale, & fromFilter, & toFilter,
& zmin, & zmax, dbScale, & ymin, & ymax)) {
return;
}
if (bandwidth <= 0) {
Melder_warning (U"Bandwidth must be greater than zero.");
}
long n = 1000;
autoNUMvector<double>a (1, n);
Graphics_setInner (g);
Graphics_setWindow (g, zmin, zmax, ymin, ymax);
for (long j = fromFilter; j <= toFilter; j++) {
double df = (zmax - zmin) / (n - 1);
double fc = my y1 + (j - 1) * my dy;
long ibegin, iend;
for (long i = 1; i <= n; i++) {
double f = zmin + (i - 1) * df;
double z = scaleFrequency (f, toFreqScale, FilterBank_HERTZ);
if (z == NUMundefined) {
a[i] = NUMundefined;
} else {
a[i] = NUMformantfilter_amplitude (fc, bandwidth, z);
if (dbScale) {
a[i] = to_dB (a[i], 10, ymin);
}
}
}
setDrawingLimits (a.peek(), n, ymin, ymax, &ibegin, &iend);
if (ibegin <= iend) {
double fmin = zmin + (ibegin - 1) * df;
double fmax = zmax - (n - iend) * df;
Graphics_function (g, a.peek(), ibegin, iend, fmin, fmax);
}
}
Graphics_unsetInner (g);
if (garnish) {
double distance = dbScale ? 10 : 1;
char32 const *ytext = dbScale ? U"Amplitude (dB)" : U"Amplitude";
Graphics_drawInnerBox (g);
Graphics_marksBottom (g, 2, 1, 1, 0);
Graphics_marksLeftEvery (g, 1, distance, 1, 1, 0);
Graphics_textLeft (g, 1, ytext);
Graphics_textBottom (g, 1, GetFreqScaleText (toFreqScale));
}
}
开发者ID:psibre,项目名称:praat,代码行数:58,代码来源:FilterBank.cpp
示例13: Polygon_paintCircles
void Polygon_paintCircles (Polygon me, Graphics g,
double xmin, double xmax, double ymin, double ymax, double diameter)
{
Graphics_setInner (g);
setWindow (me, g, xmin, xmax, ymin, ymax);
for (long i = 1; i <= my numberOfPoints; i ++)
Graphics_fillCircle_mm (g, my x [i], my y [i], diameter);
Graphics_unsetInner (g);
}
开发者ID:psibre,项目名称:praat,代码行数:9,代码来源:Polygon.cpp
示例14: Polygon_drawMarks
void Polygon_drawMarks (Polygon me, Graphics g, double xmin, double xmax,
double ymin, double ymax, double size_mm, const wchar_t *mark) {
Graphics_setInner (g);
setWindow (me, g, xmin, xmax, ymin, ymax);
for (long i = 1; i <= my numberOfPoints; i++) {
Graphics_mark (g, my x[i], my y[i], size_mm, mark);
}
Graphics_unsetInner (g);
}
开发者ID:Crisil,项目名称:praat,代码行数:9,代码来源:Polygon_extensions.cpp
示例15: MelFilter_drawFilterFunctions
void MelFilter_drawFilterFunctions (MelFilter me, Graphics g,
int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax,
int dbScale, double ymin, double ymax, int garnish) {
if (! checkLimits (me, FilterBank_MEL, toFreqScale, & fromFilter, & toFilter,
& zmin, & zmax, dbScale, & ymin, & ymax)) {
return;
}
long n = 1000;
autoNUMvector<double> a (1, n);
Graphics_setInner (g);
Graphics_setWindow (g, zmin, zmax, ymin, ymax);
for (long j = fromFilter; j <= toFilter; j++) {
double df = (zmax - zmin) / (n - 1);
double fc_mel = my y1 + (j - 1) * my dy;
double fc_hz = MELTOHZ (fc_mel);
double fl_hz = MELTOHZ (fc_mel - my dy);
double fh_hz = MELTOHZ (fc_mel + my dy);
long ibegin, iend;
for (long i = 1; i <= n; i++) {
// Filterfunction: triangular on a linear frequency scale AND a linear amplitude scale.
double f = zmin + (i - 1) * df;
double z = scaleFrequency (f, toFreqScale, FilterBank_HERTZ);
if (z == NUMundefined) {
a[i] = NUMundefined;
} else {
a[i] = NUMtriangularfilter_amplitude (fl_hz, fc_hz, fh_hz, z);
if (dbScale) {
a[i] = to_dB (a[i], 10, ymin);
}
}
}
setDrawingLimits (a.peek(), n, ymin, ymax, &ibegin, &iend);
if (ibegin <= iend) {
double fmin = zmin + (ibegin - 1) * df;
double fmax = zmax - (n - iend) * df;
Graphics_function (g, a.peek(), ibegin, iend, fmin, fmax);
}
}
Graphics_unsetInner (g);
if (garnish) {
double distance = dbScale ? 10 : 1;
char32 const *ytext = dbScale ? U"Amplitude (dB)" : U"Amplitude";
Graphics_drawInnerBox (g);
Graphics_marksBottom (g, 2, 1, 1, 0);
Graphics_marksLeftEvery (g, 1, distance, 1, 1, 0);
Graphics_textLeft (g, 1, ytext);
Graphics_textBottom (g, 1, GetFreqScaleText (toFreqScale));
}
}
开发者ID:psibre,项目名称:praat,代码行数:57,代码来源:FilterBank.cpp
示例16: FilterBank_drawFrequencyScales
void FilterBank_drawFrequencyScales (I, Graphics g, int horizontalScale, double xmin,
double xmax, int verticalScale, double ymin, double ymax, int garnish) {
iam (FilterBank);
int myFreqScale = FilterBank_getFrequencyScale (me);
if (xmin < 0 || xmax < 0 || ymin < 0 || ymax < 0) {
Melder_warning (U"Frequencies must be >= 0.");
return;
}
if (xmin >= xmax) {
double xmint = my ymin;
double xmaxt = my ymax;
if (ymin < ymax) {
xmint = scaleFrequency (ymin, verticalScale, myFreqScale);
xmaxt = scaleFrequency (ymax, verticalScale, myFreqScale);
}
xmin = scaleFrequency (xmint, myFreqScale, horizontalScale);
xmax = scaleFrequency (xmaxt, myFreqScale, horizontalScale);
}
if (ymin >= ymax) {
ymin = scaleFrequency (xmin, horizontalScale, verticalScale);
ymax = scaleFrequency (xmax, horizontalScale, verticalScale);
}
long n = 2000;
autoNUMvector<double> a (1, n);
Graphics_setInner (g);
Graphics_setWindow (g, xmin, xmax, ymin, ymax);
double df = (xmax - xmin) / (n - 1);
for (long i = 1; i <= n; i++) {
double f = xmin + (i - 1) * df;
a[i] = scaleFrequency (f, horizontalScale, verticalScale);
}
long ibegin, iend;
setDrawingLimits (a.peek(), n, ymin, ymax, & ibegin, & iend);
if (ibegin <= iend) {
double fmin = xmin + (ibegin - 1) * df;
double fmax = xmax - (n - iend) * df;
Graphics_function (g, a.peek(), ibegin, iend, fmin, fmax);
}
Graphics_unsetInner (g);
if (garnish) {
Graphics_drawInnerBox (g);
Graphics_marksLeft (g, 2, 1, 1, 0);
Graphics_textLeft (g, 1, GetFreqScaleText (verticalScale));
Graphics_marksBottom (g, 2, 1, 1, 0);
Graphics_textBottom (g, 1, GetFreqScaleText (horizontalScale));
}
}
开发者ID:psibre,项目名称:praat,代码行数:56,代码来源:FilterBank.cpp
示例17: PowerCepstrogram_paint
void PowerCepstrogram_paint (PowerCepstrogram me, Graphics g, double tmin, double tmax, double qmin, double qmax, double dBmaximum, int autoscaling, double dynamicRangedB, double dynamicCompression, int garnish) {
if (tmax <= tmin) { tmin = my xmin; tmax = my xmax; }
if (qmax <= qmin) { qmin = my ymin; qmax = my ymax; }
long itmin, itmax, ifmin, ifmax;
if (! Matrix_getWindowSamplesX (me, tmin - 0.49999 * my dx, tmax + 0.49999 * my dx, & itmin, & itmax) ||
! Matrix_getWindowSamplesY (me, qmin - 0.49999 * my dy, qmax + 0.49999 * my dy, & ifmin, & ifmax)) {
return;
}
autoMatrix thee = Data_copy (me);
double min = 1e308, max = -min;
for (long i = 1; i <= my ny; i++) {
for (long j = 1; j <= my nx; j++) {
double val = TO10LOG (my z[i][j]);
min = val < min ? val : min;
max = val > max ? val : max;
thy z[i][j] = val;
}
}
double dBminimum = dBmaximum - dynamicRangedB;
if (autoscaling) {
dBminimum = min; dBmaximum = max;
}
for (long j = 1; j <= my nx; j++) {
double lmax = thy z[1][j];
for (long i = 2; i <= my ny; i++) {
if (thy z[i][j] > lmax) {
lmax = thy z[i][j];
}
}
double factor = dynamicCompression * (max - lmax);
for (long i = 1; i <= my ny; i++) {
thy z[i][j] += factor;
}
}
Graphics_setInner (g);
Graphics_setWindow (g, tmin, tmax, qmin, qmax);
Graphics_image (g, thy z,
itmin, itmax,
Matrix_columnToX (thee.get(), itmin - 0.5),
Matrix_columnToX (thee.get(), itmax + 0.5),
ifmin, ifmax,
Matrix_rowToY (thee.get(), ifmin - 0.5),
Matrix_rowToY (thee.get(), ifmax + 0.5),
dBminimum, dBmaximum);
Graphics_unsetInner (g);
if (garnish) {
Graphics_drawInnerBox (g);
Graphics_textBottom (g, true, U"Time (s)");
Graphics_marksBottom (g, 2, true, true, false);
Graphics_marksLeft (g, 2, true, true, false);
Graphics_textLeft (g, true, U"Quefrency (s)");
}
}
开发者ID:nullpunktTUD,项目名称:praat,代码行数:56,代码来源:Cepstrogram.cpp
示例18: BarkFilter_drawSekeyHansonFilterFunctions
void BarkFilter_drawSekeyHansonFilterFunctions (BarkFilter me, Graphics g,
int toFreqScale, int fromFilter, int toFilter, double zmin, double zmax,
int dbScale, double ymin, double ymax, int garnish) {
if (! checkLimits (me, FilterBank_BARK, toFreqScale, & fromFilter, & toFilter,
& zmin, & zmax, dbScale, & ymin, & ymax)) {
return;
}
long n = 1000;
autoNUMvector<double> a (1, n);
Graphics_setInner (g);
Graphics_setWindow (g, zmin, zmax, ymin, ymax);
for (long j = fromFilter; j <= toFilter; j++) {
double df = (zmax - zmin) / (n - 1);
double zMid = Matrix_rowToY (me, j);
long ibegin, iend;
for (long i = 1; i <= n; i++) {
double f = zmin + (i - 1) * df;
double z = scaleFrequency (f, toFreqScale, FilterBank_BARK);
if (z == NUMundefined) {
a[i] = NUMundefined;
} else {
z -= zMid + 0.215;
a[i] = 7 - 7.5 * z - 17.5 * sqrt (0.196 + z * z);
if (! dbScale) {
a[i] = pow (10, a[i]);
}
}
}
setDrawingLimits (a.peek(), n, ymin, ymax, &ibegin, &iend);
if (ibegin <= iend) {
double fmin = zmin + (ibegin - 1) * df;
double fmax = zmax - (n - iend) * df;
Graphics_function (g, a.peek(), ibegin, iend, fmin, fmax);
}
}
Graphics_unsetInner (g);
if (garnish) {
double distance = dbScale ? 10 : 1;
const char32 *ytext = dbScale ? U"Amplitude (dB)" : U"Amplitude";
Graphics_drawInnerBox (g);
Graphics_marksBottom (g, 2, 1, 1, 0);
Graphics_marksLeftEvery (g, 1, distance, 1, 1, 0);
Graphics_textLeft (g, 1, ytext);
Graphics_textBottom (g, 1, GetFreqScaleText (toFreqScale));
}
}
开发者ID:psibre,项目名称:praat,代码行数:55,代码来源:FilterBank.cpp
示例19: BandFilterSpectrogram_drawSpectrumAtNearestTimeSlice
void BandFilterSpectrogram_drawSpectrumAtNearestTimeSlice (BandFilterSpectrogram me, Graphics g, double time, double fmin, double fmax, double dBmin, double dBmax, int garnish) {
if (time < my xmin || time > my xmax) {
return;
}
if (fmin == 0 && fmax == 0) { // autoscaling
fmin = my ymin; fmax = my ymax;
}
if (fmax <= fmin) {
fmin = my ymin; fmax = my ymax;
}
long icol = Matrix_xToNearestColumn (me, time);
icol = icol < 1 ? 1 : (icol > my nx ? my nx : icol);
autoNUMvector<double> spectrum (1, my ny);
for (long i = 1; i <= my ny; i++) {
spectrum[i] = my v_getValueAtSample (icol, i, 1); // dB's
}
long iymin, iymax;
if (Matrix_getWindowSamplesY (me, fmin, fmax, &iymin, &iymax) < 2) { // too few values
return;
}
if (dBmin == dBmax) { // autoscaling
dBmin = spectrum[iymin]; dBmax = dBmin;
for (long i = iymin + 1; i <= iymax; i++) {
if (spectrum[i] < dBmin) {
dBmin = spectrum[i];
} else if (spectrum[i] > dBmax) {
dBmax = spectrum[i];
}
}
if (dBmin == dBmax) {
dBmin -= 1; dBmax += 1;
}
}
Graphics_setWindow (g, fmin, fmax, dBmin, dBmax);
Graphics_setInner (g);
double x1 = my y1 + (iymin -1) * my dy, y1 = spectrum[iymin];
for (long i = iymin + 1; i <= iymax - 1; i++) {
double x2 = my y1 + (i -1) * my dy, y2 = spectrum[i];
double xo1, yo1, xo2, yo2;
if (NUMclipLineWithinRectangle (x1, y1, x2, y2, fmin, dBmin, fmax, dBmax, &xo1, &yo1, &xo2, &yo2)) {
Graphics_line (g, xo1, yo1, xo2, yo2);
}
x1 = x2; y1 = y2;
}
Graphics_unsetInner (g);
if (garnish) {
Graphics_drawInnerBox (g);
Graphics_marksBottom (g, 2, 1, 1, 0);
Graphics_marksLeft (g, 2, 1, 1, 0);
Graphics_textLeft (g, 1, U"Power (dB)");
Graphics_textBottom (g, 1, Melder_cat (U"Frequency (", my v_getFrequencyUnit (), U")"));
}
}
开发者ID:davideberdin,项目名称:praat,代码行数:55,代码来源:Spectrogram_extensions.cpp
示例20: EditDistanceTable_draw
void EditDistanceTable_draw (EditDistanceTable me, Graphics graphics, int iformat, int precision, double angle) {
long rowmin = 1, rowmax = my numberOfRows;
Graphics_setInner (graphics);
Graphics_setWindow (graphics, 0.5, my numberOfColumns + 0.5, 0, 1);
double leftMargin = getLeftMargin (graphics); // not earlier!
double lineSpacing = getLineSpacing (graphics); // not earlier!
double maxTextWidth = getMaxRowLabelWidth (me, graphics, rowmin, rowmax);
double y = 1 + 0.1 * lineSpacing;
autoNUMmatrix<bool> onPath (1, my numberOfRows, 1, my numberOfColumns);
for (long i = 1; i <= my warpingPath -> pathLength; i++) {
structPairOfInteger poi = my warpingPath -> path[i];
onPath[poi.y] [poi.x] = true;
}
for (long irow = my numberOfRows; irow > 0; irow --) {
Graphics_setTextAlignment (graphics, Graphics_RIGHT, Graphics_HALF);
if (my rowLabels && my rowLabels [irow] && my rowLabels [irow] [0])
Graphics_text (graphics, 0.5 - leftMargin, y, my rowLabels [irow]);
Graphics_setTextAlignment (graphics, Graphics_CENTRE, Graphics_HALF);
for (long icol = 1; icol <= my numberOfColumns; icol ++) {
char text [40];
print4 (text, my data [irow] [icol], iformat, 0, precision);
Graphics_setBold (graphics, onPath[irow][icol]);
Graphics_text (graphics, icol, y, Melder_peek8to32 (text));
if (onPath[irow][icol]) {
Graphics_rectangle (graphics, icol-0.5, icol+0.5, y - 0.5*lineSpacing, y + 0.5*lineSpacing);
}
}
y -= lineSpacing;
Graphics_setBold (graphics, false);
}
double left = 0.5;
if (maxTextWidth > 0.0) left -= maxTextWidth + 2 * leftMargin;
Graphics_line (graphics, left, y, my numberOfColumns + 0.5, y);
Graphics_setTextRotation (graphics, angle);
if (angle < 0) {
y -= 0.3*lineSpacing;
Graphics_setTextAlignment (graphics, Graphics_LEFT, Graphics_HALF);
} else if (angle > 0) {
Graphics_setTextAlignment (graphics, Graphics_RIGHT, Graphics_HALF);
y -= 0.3*lineSpacing;
} else {
Graphics_setTextAlignment (graphics, Graphics_CENTRE, Graphics_TOP);
}
for (long icol = 1; icol <= my numberOfColumns; icol ++) {
if (my columnLabels && my columnLabels [icol] && my columnLabels [icol] [0])
Graphics_text (graphics, icol, y, my columnLabels [icol]);
}
Graphics_setTextRotation (graphics, 0);
y -= lineSpacing;
Graphics_line (graphics, 0.5, y, 0.5, 1 + 0.5 * lineSpacing);
Graphics_unsetInner (graphics);
}
开发者ID:psibre,项目名称:praat,代码行数:55,代码来源:EditDistanceTable.cpp
注:本文中的Graphics_setInner函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论