Exemple #1
0
void Graphics_setWsViewport (Graphics me,
	long x1DC, long x2DC, long y1DC, long y2DC)
{
	if (x1DC < my d_x1DCmin || x2DC > my d_x2DCmax || y1DC < my d_y1DCmin || y2DC > my d_y2DCmax) {
		Melder_warning (U"Graphics_setWsViewport: coordinates too large:\n",
			x1DC, U"..", x2DC, U" x ", y1DC, U"..", y2DC,
			U" goes outside ",
			my d_x1DCmin, U"..", my d_x2DCmax, U" x ", my d_y1DCmin, U"..", my d_y2DCmax,
			U"."
		);
		x1DC = my d_x1DCmin;
		x2DC = my d_x2DCmax;
		y1DC = my d_y1DCmin;
		y2DC = my d_y2DCmax;
	}
	my d_x1DC = x1DC;
	my d_x2DC = x2DC;
	my d_y1DC = y1DC;
	my d_y2DC = y2DC;
	#if win
		if (my screen && my printer) {
			GraphicsScreen mescreen = (GraphicsScreen) me;
			/*
			 * Map page coordinates to paper coordinates.
			 */
			mescreen -> d_x1DC -=  GetDeviceCaps (mescreen -> d_gdiGraphicsContext, PHYSICALOFFSETX);
			mescreen -> d_x2DC -=  GetDeviceCaps (mescreen -> d_gdiGraphicsContext, PHYSICALOFFSETX);
			mescreen -> d_y1DC -=  GetDeviceCaps (mescreen -> d_gdiGraphicsContext, PHYSICALOFFSETY);
			mescreen -> d_y2DC -=  GetDeviceCaps (mescreen -> d_gdiGraphicsContext, PHYSICALOFFSETY);
		}
	#endif
	computeTrafo (me);
}
Exemple #2
0
int Graphics_init (I) {
    iam (Graphics);
    my x1DC = my x1DCmin = 0;
    my x2DC = my x2DCmax = 32767;
    my y1DC = my y1DCmin = 0;
    my y2DC = my y2DCmax = 32767;
    my x1WC = my x1NDC = my x1wNDC = 0.0;
    my x2WC = my x2NDC = my x2wNDC = 1.0;
    my y1WC = my y1NDC = my y1wNDC = 0.0;
    my y2WC = my y2NDC = my y2wNDC = 1.0;
    widgetToWindowCoordinates (me);
    computeTrafo (me);
    my lineWidth = 1.0;
    my arrowSize = 1.0;
    my font = kGraphics_font_HELVETICA;
    my fontSize = 10;
    my fontStyle = Graphics_NORMAL;
    my record = NULL;
    my irecord = my nrecord = 0;
    my percentSignIsItalic = 1;
    my numberSignIsBold = 1;
    my circumflexIsSuperscript = 1;
    my underscoreIsSubscript = 1;
    my dollarSignIsCode = 0;
    my atSignIsLink = 0;
    return 1;
}
Exemple #3
0
void Graphics_setWsWindow (Graphics me, double x1NDC, double x2NDC, double y1NDC, double y2NDC) {
	my d_x1wNDC = x1NDC;
	my d_x2wNDC = x2NDC;
	my d_y1wNDC = y1NDC;
	my d_y2wNDC = y2NDC;
	computeTrafo (me);
	if (my recording)
		{ op (SET_WS_WINDOW, 4); put (x1NDC); put (x2NDC); put (y1NDC); put (y2NDC); }
}
Exemple #4
0
void Graphics_resetWsViewport (Graphics me,
	long x1DC, long x2DC, long y1DC, long y2DC)
{
	my d_x1DC = x1DC;
	my d_x2DC = x2DC;
	my d_y1DC = y1DC;
	my d_y2DC = y2DC;
	computeTrafo (me);
}
Exemple #5
0
void Graphics_unsetInner (Graphics me) {
	my d_x1NDC = my outerViewport.x1NDC;
	my d_x2NDC = my outerViewport.x2NDC;
	my d_y1NDC = my outerViewport.y1NDC;
	my d_y2NDC = my outerViewport.y2NDC;
	trace (U"done ", my d_x1NDC, U" ", my d_x2NDC, U" ", my d_y1NDC, U" ", my d_y2NDC);
	computeTrafo (me);
	if (my recording)
		{ op (UNSET_INNER, 0); }
}
Exemple #6
0
void Graphics_setViewport (Graphics me, double x1NDC, double x2NDC, double y1NDC, double y2NDC) {
	trace (U"enter ", x1NDC, U_SPACE, x2NDC, U_SPACE, y1NDC, U_SPACE, y2NDC);
	my d_x1NDC = x1NDC;
	my d_x2NDC = x2NDC;
	my d_y1NDC = y1NDC;
	my d_y2NDC = y2NDC;
	computeTrafo (me);
	if (my recording)
		{ op (SET_VIEWPORT, 4); put (x1NDC); put (x2NDC); put (y1NDC); put (y2NDC); }
}
Exemple #7
0
void Graphics_resetWsViewport (I,
                               long x1DC, long x2DC, long y1DC, long y2DC)
{
    iam (Graphics);
    my x1DC = x1DC;
    my x2DC = x2DC;
    my y1DC = y1DC;
    my y2DC = y2DC;
    computeTrafo (me);
}
Exemple #8
0
void Graphics_setWindow (Graphics me, double x1WC, double x2WC, double y1WC, double y2WC) {
	Melder_assert (x1WC != x2WC);
	Melder_assert (y1WC != y2WC);
	my d_x1WC = x1WC;
	my d_x2WC = x2WC;
	my d_y1WC = y1WC;
	my d_y2WC = y2WC;
	computeTrafo (me);
	if (my recording)
		{ op (SET_WINDOW, 4); put (x1WC); put (x2WC); put (y1WC); put (y2WC); }
}
Exemple #9
0
void Graphics_unsetInner (I) {
    iam (Graphics);
    my x1NDC = my outerViewport.x1NDC;
    my x2NDC = my outerViewport.x2NDC;
    my y1NDC = my outerViewport.y1NDC;
    my y2NDC = my outerViewport.y2NDC;
    computeTrafo (me);
    if (my recording)
    {
        g_op (UNSET_INNER, 0);
    }
}
Exemple #10
0
void Graphics_setWindow (I, double x1WC, double x2WC, double y1WC, double y2WC) {
    iam (Graphics);
    my x1WC = x1WC;
    my x2WC = x2WC;
    my y1WC = y1WC;
    my y2WC = y2WC;
    computeTrafo (me);
    if (my recording)
    {
        g_op (SET_WINDOW, 4);
        put (x1WC);
        put (x2WC);
        put (y1WC);
        put (y2WC);
    }
}
Exemple #11
0
void Graphics_setViewport (I, double x1NDC, double x2NDC, double y1NDC, double y2NDC) {
    iam (Graphics);
    my x1NDC = x1NDC;
    my x2NDC = x2NDC;
    my y1NDC = y1NDC;
    my y2NDC = y2NDC;
    computeTrafo (me);
    if (my recording)
    {
        g_op (SET_VIEWPORT, 4);
        put (x1NDC);
        put (x2NDC);
        put (y1NDC);
        put (y2NDC);
    }
}
Exemple #12
0
void Graphics_setWsWindow (I, double x1NDC, double x2NDC, double y1NDC, double y2NDC) {
    iam (Graphics);
    my x1wNDC = x1NDC;
    my x2wNDC = x2NDC;
    my y1wNDC = y1NDC;
    my y2wNDC = y2NDC;
    computeTrafo (me);
    if (my recording)
    {
        g_op (SET_WS_WINDOW, 4);
        put (x1NDC);
        put (x2NDC);
        put (y1NDC);
        put (y2NDC);
    }
}
Exemple #13
0
void Graphics_init (Graphics me, int resolution) {
	my resolution = resolution;
	if (resolution == 96) {
		my resolutionNumber = kGraphics_resolution_96;
	} else if (resolution == 100) {
		my resolutionNumber = kGraphics_resolution_100;
	} else if (resolution == 180) {
		my resolutionNumber = kGraphics_resolution_180;
	} else if (resolution == 200) {
		my resolutionNumber = kGraphics_resolution_200;
	} else if (resolution == 300) {
		my resolutionNumber = kGraphics_resolution_300;
	} else if (resolution == 360) {
		my resolutionNumber = kGraphics_resolution_360;
	} else if (resolution == 600) {
		my resolutionNumber = kGraphics_resolution_600;
	} else if (resolution == 720) {
		my resolutionNumber = kGraphics_resolution_720;
	} else if (resolution == 1200) {
		my resolutionNumber = kGraphics_resolution_1200;
	} else {
		Melder_fatal (U"Unsupported resolution ", resolution, U" dpi.");
	}
	my d_x1DC = my d_x1DCmin = 0;	my d_x2DC = my d_x2DCmax = 32767;
	my d_y1DC = my d_y1DCmin = 0;	my d_y2DC = my d_y2DCmax = 32767;
	my d_x1WC = my d_x1NDC = my d_x1wNDC = 0.0;
	my d_x2WC = my d_x2NDC = my d_x2wNDC = 1.0;
	my d_y1WC = my d_y1NDC = my d_y1wNDC = 0.0;
	my d_y2WC = my d_y2NDC = my d_y2wNDC = 1.0;
	widgetToWindowCoordinates (me);
	computeTrafo (me);
	my lineWidth = 1.0;
	my arrowSize = 1.0;
	my speckleSize = 1.0;
	my font = kGraphics_font_HELVETICA;
	my fontSize = 10;
	my fontStyle = Graphics_NORMAL;
	my record = nullptr;
	my irecord = my nrecord = 0;
	my percentSignIsItalic = 1;
	my numberSignIsBold = 1;
	my circumflexIsSuperscript = 1;
	my underscoreIsSubscript = 1;
	my dollarSignIsCode = 0;
	my atSignIsLink = 0;
}
Exemple #14
0
void Graphics_setInner (Graphics me) {
	double margin = 2.8 * my fontSize * my resolution / 72.0;
	double wDC = (my d_x2DC - my d_x1DC) / (my d_x2wNDC - my d_x1wNDC) * (my d_x2NDC - my d_x1NDC);
	double hDC = labs (my d_y2DC - my d_y1DC) / (my d_y2wNDC - my d_y1wNDC) * (my d_y2NDC - my d_y1NDC);
	double dx = 1.5 * margin / wDC;
	double dy = margin / hDC;
	my horTick = 0.06 * dx, my vertTick = 0.09 * dy;
	if (dx > 0.4) dx = 0.4;
	if (dy > 0.4) dy = 0.4;
	my horTick /= 1 - 2 * dx, my vertTick /= 1 - 2 * dy;
	my outerViewport.x1NDC = my d_x1NDC;
	my outerViewport.x2NDC = my d_x2NDC;
	my outerViewport.y1NDC = my d_y1NDC;
	my outerViewport.y2NDC = my d_y2NDC;
	my d_x1NDC = (1 - dx) * my outerViewport.x1NDC + dx * my outerViewport.x2NDC;
	my d_x2NDC = (1 - dx) * my outerViewport.x2NDC + dx * my outerViewport.x1NDC;
	my d_y1NDC = (1 - dy) * my outerViewport.y1NDC + dy * my outerViewport.y2NDC;
	my d_y2NDC = (1 - dy) * my outerViewport.y2NDC + dy * my outerViewport.y1NDC;
	trace (U"done ", my d_x1NDC, U" ", my d_x2NDC, U" ", my d_y1NDC, U" ", my d_y2NDC);
	computeTrafo (me);
	if (my recording) { op (SET_INNER, 0); }
}
Exemple #15
0
void Graphics_setInner (I) {
    iam (Graphics);
    double margin = 2.8 * my fontSize * my resolution / 72.0, wDC, hDC, dx, dy;
    wDC = (my x2DC - my x1DC) / (my x2wNDC - my x1wNDC) * (my x2NDC - my x1NDC);
    hDC = abs (my y2DC - my y1DC) / (my y2wNDC - my y1wNDC) * (my y2NDC - my y1NDC);
    dx = 1.5 * margin / wDC;
    dy = margin / hDC;
    my horTick = 0.06 * dx, my vertTick = 0.09 * dy;
    if (dx > 0.4) dx = 0.4;
    if (dy > 0.4) dy = 0.4;
    my horTick /= 1 - 2 * dx, my vertTick /= 1 - 2 * dy;
    my outerViewport.x1NDC = my x1NDC;
    my outerViewport.x2NDC = my x2NDC;
    my outerViewport.y1NDC = my y1NDC;
    my outerViewport.y2NDC = my y2NDC;
    my x1NDC = (1 - dx) * my outerViewport.x1NDC + dx * my outerViewport.x2NDC;
    my x2NDC = (1 - dx) * my outerViewport.x2NDC + dx * my outerViewport.x1NDC;
    my y1NDC = (1 - dy) * my outerViewport.y1NDC + dy * my outerViewport.y2NDC;
    my y2NDC = (1 - dy) * my outerViewport.y2NDC + dy * my outerViewport.y1NDC;
    computeTrafo (me);
    if (my recording) {
        g_op (SET_INNER, 0);
    }
}
Exemple #16
0
void Graphics_setWsViewport (I,
                             long x1DC, long x2DC, long y1DC, long y2DC)
{
    iam (Graphics);
    if (x1DC < my x1DCmin || x2DC > my x2DCmax || y1DC < my y1DCmin || y2DC > my y2DCmax) {
        static MelderString warning = { 0 };
        MelderString_empty (& warning);
        MelderString_append8 (& warning, L"Graphics_setWsViewport: coordinates too large:\n",
                              Melder_integer (x1DC), L"..", Melder_integer (x2DC), L" x ", Melder_integer (y1DC), L"..", Melder_integer (y2DC));
        MelderString_append9 (& warning, L" goes outside ",
                              Melder_integer (my x1DCmin), L"..", Melder_integer (my x2DCmax), L" x ", Melder_integer (my y1DCmin), L"..", Melder_integer (my y2DCmax), L".");
        Melder_warning1 (warning.string);
        x1DC = my x1DCmin;
        x2DC = my x2DCmax;
        y1DC = my y1DCmin;
        y2DC = my y2DCmax;
    }
    my x1DC = x1DC;
    my x2DC = x2DC;
    my y1DC = y1DC;
    my y2DC = y2DC;
    widgetToWindowCoordinates (me);
#if win
    if (my screen && my printer) {
        iam (GraphicsScreen);
        /*
         * Map page coordinates to paper coordinates.
         */
        my x1DC -=  GetDeviceCaps (my dc, PHYSICALOFFSETX);
        my x2DC -=  GetDeviceCaps (my dc, PHYSICALOFFSETX);
        my y1DC -=  GetDeviceCaps (my dc, PHYSICALOFFSETY);
        my y2DC -=  GetDeviceCaps (my dc, PHYSICALOFFSETY);
    }
#endif
    computeTrafo (me);
}