From e6a05dbef707dc10e546ef8fef8fc2a8b7d805bf Mon Sep 17 00:00:00 2001 From: cvs2svn Date: Mon, 24 Jan 2005 15:46:33 +0000 Subject: This commit was manufactured by cvs2svn to create branch 'POSTSCRIPT'. --- win/Tkzinc.aip.in | 118 ------ win/Tkzincperl.aip.in | 151 ------- win/WinPort.c | 1042 ------------------------------------------------- win/makefile.vc.in | 130 ------ win/package.tcl | 76 ---- 5 files changed, 1517 deletions(-) delete mode 100644 win/Tkzinc.aip.in delete mode 100644 win/Tkzincperl.aip.in delete mode 100644 win/WinPort.c delete mode 100644 win/makefile.vc.in delete mode 100644 win/package.tcl (limited to 'win') diff --git a/win/Tkzinc.aip.in b/win/Tkzinc.aip.in deleted file mode 100644 index d7fc904..0000000 --- a/win/Tkzinc.aip.in +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win/Tkzincperl.aip.in b/win/Tkzincperl.aip.in deleted file mode 100644 index b6e5e02..0000000 --- a/win/Tkzincperl.aip.in +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/win/WinPort.c b/win/WinPort.c deleted file mode 100644 index 8e6b8d8..0000000 --- a/win/WinPort.c +++ /dev/null @@ -1,1042 +0,0 @@ -/* - * WinPort.c -- Compatibility layer for Windows 2k - * - * Authors : Patrick Lecoanet. - * Creation date : - * - * $Id$ - */ - -/* - * Copyright (c) 2003 - CENA, Patrick Lecoanet -- - * - * This code is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This code is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this code; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#ifdef _WIN32 - -#include "Types.h" - -#include -#include -#ifdef PTK -#include -#endif - -static const char rcsid[] = "$Id"; -static const char compile_id[]="$Compile$"; - -#ifndef MIN -#define MIN(a, b) ((a) <= (b) ? (a) : (b)) -#endif -#ifndef MAX -#define MAX(a, b) ((a) >= (b) ? (a) : (b)) -#endif - - -/* - *---------------------------------------------------------------------- - * - * ZnPointInRegion -- - * - * Test whether the specified point is inside a region. - * - * Results: - * Returns the boolean result of the test. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ -int -ZnPointInRegion(TkRegion reg, - int x, - int y) -{ - return PtInRegion((HRGN) reg, x, y); -} - -/* - *---------------------------------------------------------------------- - * - * ZnUnionRegion -- - * - * Compute the union of two regions. - * - * Results: - * Returns the result in the dr_return region. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ -void -ZnUnionRegion(TkRegion sra, - TkRegion srb, - TkRegion dr_return) -{ - CombineRgn((HRGN) dr_return, (HRGN) sra, (HRGN) srb, RGN_OR); -} - -/* - *---------------------------------------------------------------------- - * - * ZnOffsetRegion -- - * - * Offset a region by the specified pixel offsets. - * - * Results: - * Returns the result in the dr_return region. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ -void -ZnOffsetRegion(TkRegion reg, - int dx, - int dy) -{ - OffsetRgn((HRGN) reg, dx, dy); -} - -/* - *---------------------------------------------------------------------- - * - * ZnPolygonRegion -- - * - * Compute a region from a polygon. - * - * Results: - * Returns the result in the dr_return region. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ -TkRegion -ZnPolygonRegion(XPoint *points, - int n, - int fill_rule) -{ - POINT *pts; - HRGN reg; - int i; - - pts = (POINT *) ckalloc(n*sizeof(POINT)); - for (i = 0; i < n; i++, points++) { - pts[i].x = points->x; - pts[i].y = points->y; - } - - reg = CreatePolygonRgn(pts, n, - fill_rule==EvenOddRule?ALTERNATE:WINDING); - if (!reg) { - fprintf(stderr, "Polygon region failed: %ld, n: %d\n", GetLastError(), n); - } - ckfree((char *) pts); - return (TkRegion) reg; -} - -#define PI 3.14159265358979 -#define XAngleToRadians(a) ((double)(a) / 64 * PI / 180); - -/* - * Translation table between X gc functions and Win32 raster op modes. - */ - -int tkpWinRopModes[] = { - R2_BLACK, /* GXclear */ - R2_MASKPEN, /* GXand */ - R2_MASKPENNOT, /* GXandReverse */ - R2_COPYPEN, /* GXcopy */ - R2_MASKNOTPEN, /* GXandInverted */ - R2_NOT, /* GXnoop */ - R2_XORPEN, /* GXxor */ - R2_MERGEPEN, /* GXor */ - R2_NOTMERGEPEN, /* GXnor */ - R2_NOTXORPEN, /* GXequiv */ - R2_NOT, /* GXinvert */ - R2_MERGEPENNOT, /* GXorReverse */ - R2_NOTCOPYPEN, /* GXcopyInverted */ - R2_MERGENOTPEN, /* GXorInverted */ - R2_NOTMASKPEN, /* GXnand */ - R2_WHITE /* GXset */ -}; - -/* - * The following two raster ops are used to copy the foreground and background - * bits of a source pattern as defined by a stipple used as the pattern. - */ - -#define COPYFG 0x00CA0749 /* dest = (pat & src) | (!pat & dst) */ -#define COPYBG 0x00AC0744 /* dest = (!pat & src) | (pat & dst) */ - -/* - * The followng typedef is used to pass Windows GDI drawing functions. - */ - -typedef BOOL (CALLBACK *WinDrawFunc) _ANSI_ARGS_((HDC dc, - CONST POINT* points, int npoints)); - -typedef struct ThreadSpecificData { - POINT *winPoints; /* Array of points that is reused. */ - int nWinPoints; /* Current size of point array. */ -} ThreadSpecificData; -static Tcl_ThreadDataKey dataKey; - -/* - *---------------------------------------------------------------------- - * - * SetUpGraphicsPort -- - * - * Set up the graphics port from the given GC. - * - * Results: - * None. - * - * Side effects: - * The current port is adjusted. - * - *---------------------------------------------------------------------- - */ - -static HPEN -SetUpGraphicsPort(gc) - GC gc; -{ - DWORD style; - - if (gc->line_style == LineOnOffDash) { - unsigned char *p = (unsigned char *) &(gc->dashes); - /* pointer to the dash-list */ - - /* - * Below is a simple translation of serveral dash patterns - * to valid windows pen types. Far from complete, - * but I don't know how to do it better. - * Any ideas: - */ - - if (p[1] && p[2]) { - if (!p[3] || p[4]) { - style = PS_DASHDOTDOT; /* -.. */ - } else { - style = PS_DASHDOT; /* -. */ - } - } else { - if (p[0] > (4 * gc->line_width)) { - style = PS_DASH; /* - */ - } else { - style = PS_DOT; /* . */ - } - } - } else { - style = PS_SOLID; - } - if (gc->line_width < 2) { - return CreatePen(style, gc->line_width, gc->foreground); - } else { - LOGBRUSH lb; - - lb.lbStyle = BS_SOLID; - lb.lbColor = gc->foreground; - lb.lbHatch = 0; - - style |= PS_GEOMETRIC; - switch (gc->cap_style) { - case CapNotLast: - case CapButt: - style |= PS_ENDCAP_FLAT; - break; - case CapRound: - style |= PS_ENDCAP_ROUND; - break; - default: - style |= PS_ENDCAP_SQUARE; - break; - } - switch (gc->join_style) { - case JoinMiter: - style |= PS_JOIN_MITER; - break; - case JoinRound: - style |= PS_JOIN_ROUND; - break; - default: - style |= PS_JOIN_BEVEL; - break; - } - return ExtCreatePen(style, gc->line_width, &lb, 0, NULL); - } -} - -/* - *---------------------------------------------------------------------- - * - * ConvertPoints -- - * - * Convert an array of X points to an array of Win32 points. - * - * Results: - * Returns the converted array of POINTs. - * - * Side effects: - * Allocates a block of memory in thread local storage that - * should not be freed. - * - *---------------------------------------------------------------------- - */ - -static POINT * -ConvertPoints(points, npoints, mode, bbox) - XPoint *points; - int npoints; - int mode; /* CoordModeOrigin or CoordModePrevious. */ - RECT *bbox; /* Bounding box of points. */ -{ - ThreadSpecificData *tsdPtr = (ThreadSpecificData *) - Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); - int i; - - /* - * To avoid paying the cost of a malloc on every drawing routine, - * we reuse the last array if it is large enough. - */ - - if (npoints > tsdPtr->nWinPoints) { - if (tsdPtr->winPoints != NULL) { - ckfree((char *) tsdPtr->winPoints); - } - tsdPtr->winPoints = (POINT *) ckalloc(sizeof(POINT) * npoints); - if (tsdPtr->winPoints == NULL) { - tsdPtr->nWinPoints = -1; - return NULL; - } - tsdPtr->nWinPoints = npoints; - } - - bbox->left = bbox->right = points[0].x; - bbox->top = bbox->bottom = points[0].y; - - if (mode == CoordModeOrigin) { - for (i = 0; i < npoints; i++) { - tsdPtr->winPoints[i].x = points[i].x; - tsdPtr->winPoints[i].y = points[i].y; - bbox->left = MIN(bbox->left, tsdPtr->winPoints[i].x); - bbox->right = MAX(bbox->right, tsdPtr->winPoints[i].x); - bbox->top = MIN(bbox->top, tsdPtr->winPoints[i].y); - bbox->bottom = MAX(bbox->bottom, tsdPtr->winPoints[i].y); - } - } else { - tsdPtr->winPoints[0].x = points[0].x; - tsdPtr->winPoints[0].y = points[0].y; - for (i = 1; i < npoints; i++) { - tsdPtr->winPoints[i].x = tsdPtr->winPoints[i-1].x + points[i].x; - tsdPtr->winPoints[i].y = tsdPtr->winPoints[i-1].y + points[i].y; - bbox->left = MIN(bbox->left, tsdPtr->winPoints[i].x); - bbox->right = MAX(bbox->right, tsdPtr->winPoints[i].x); - bbox->top = MIN(bbox->top, tsdPtr->winPoints[i].y); - bbox->bottom = MAX(bbox->bottom, tsdPtr->winPoints[i].y); - } - } - return tsdPtr->winPoints; -} - -/* - *---------------------------------------------------------------------- - * - * XFillRectangles -- - * - * Fill multiple rectangular areas in the given drawable. - * - * Results: - * None. - * - * Side effects: - * Draws onto the specified drawable. - * - *---------------------------------------------------------------------- - */ -void -XFillRectangles(display, d, gc, rectangles, nrectangles) - Display* display; - Drawable d; - GC gc; - XRectangle* rectangles; - int nrectangles; -{ - HDC dc; - int i; - RECT rect; - TkWinDCState state; - HBRUSH brush; - TkpClipMask *clipPtr = (TkpClipMask*)gc->clip_mask; - - if (d == None) { - return; - } - - dc = TkWinGetDrawableDC(display, d, &state); - SetROP2(dc, tkpWinRopModes[gc->function]); - brush = CreateSolidBrush(gc->foreground); - - if (clipPtr && clipPtr->type == TKP_CLIP_REGION) { - SelectClipRgn(dc, (HRGN) clipPtr->value.region); - OffsetClipRgn(dc, gc->clip_x_origin, gc->clip_y_origin); - } - if ((gc->fill_style == FillStippled - || gc->fill_style == FillOpaqueStippled) - && gc->stipple != None) { - TkWinDrawable *twdPtr = (TkWinDrawable *)gc->stipple; - HBRUSH oldBrush, stipple; - HBITMAP oldBitmap, bitmap; - HDC dcMem; - HBRUSH bgBrush = CreateSolidBrush(gc->background); - - if (twdPtr->type != TWD_BITMAP) { - Tcl_Panic("unexpected drawable type in stipple"); - } - - /* - * Select stipple pattern into destination dc. - */ - - stipple = CreatePatternBrush(twdPtr->bitmap.handle); - SetBrushOrgEx(dc, gc->ts_x_origin, gc->ts_y_origin, NULL); - oldBrush = SelectObject(dc, stipple); - dcMem = CreateCompatibleDC(dc); - - /* - * For each rectangle, create a drawing surface which is the size of - * the rectangle and fill it with the background color. Then merge the - * result with the stipple pattern. - */ - for (i = 0; i < nrectangles; i++) { - bitmap = CreateCompatibleBitmap(dc, rectangles[i].width, - rectangles[i].height); - oldBitmap = SelectObject(dcMem, bitmap); - rect.left = 0; - rect.top = 0; - rect.right = rectangles[i].width; - rect.bottom = rectangles[i].height; - FillRect(dcMem, &rect, brush); - BitBlt(dc, rectangles[i].x, rectangles[i].y, rectangles[i].width, - rectangles[i].height, dcMem, 0, 0, COPYFG); - if (gc->fill_style == FillOpaqueStippled) { - FillRect(dcMem, &rect, bgBrush); - BitBlt(dc, rectangles[i].x, rectangles[i].y, - rectangles[i].width, rectangles[i].height, dcMem, - 0, 0, COPYBG); - } - SelectObject(dcMem, oldBitmap); - DeleteObject(bitmap); - } - - DeleteDC(dcMem); - SelectObject(dc, oldBrush); - DeleteObject(stipple); - DeleteObject(bgBrush); - } else { - for (i = 0; i < nrectangles; i++) { - TkWinFillRect(dc, rectangles[i].x, rectangles[i].y, - rectangles[i].width, rectangles[i].height, gc->foreground); - } - } - DeleteObject(brush); - TkWinReleaseDrawableDC(d, dc, &state); -} - - -/* - *---------------------------------------------------------------------- - * - * XFillRectangle -- - * - * Fills a rectangular area in the given drawable. This procedure - * is implemented as a call to XFillRectangles. - * - * Results: - * None - * - * Side effects: - * Fills the specified rectangle. - * - *---------------------------------------------------------------------- - */ - -void -XFillRectangle(display, d, gc, x, y, width, height) - Display* display; - Drawable d; - GC gc; - int x; - int y; - unsigned int width; - unsigned int height; -{ - XRectangle rectangle; - rectangle.x = x; - rectangle.y = y; - rectangle.width = width; - rectangle.height = height; - XFillRectangles(display, d, gc, &rectangle, 1); -} - -/* - *---------------------------------------------------------------------- - * - * RenderObject -- - * - * This function draws a shape using a list of points, a - * stipple pattern, and the specified drawing function. - * - * Results: - * None. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - -static void -RenderObject(dc, gc, points, npoints, mode, pen, func) - HDC dc; - GC gc; - XPoint* points; - int npoints; - int mode; - HPEN pen; - WinDrawFunc func; -{ - RECT rect; - HPEN oldPen; - HBRUSH oldBrush; - POINT *winPoints = ConvertPoints(points, npoints, mode, &rect); - TkpClipMask *clipPtr = (TkpClipMask*)gc->clip_mask; - - if (clipPtr && clipPtr->type == TKP_CLIP_REGION) { - SelectClipRgn(dc, (HRGN) clipPtr->value.region); - OffsetClipRgn(dc, gc->clip_x_origin, gc->clip_y_origin); - } - if ((gc->fill_style == FillStippled - || gc->fill_style == FillOpaqueStippled) - && gc->stipple != None) { - - TkWinDrawable *twdPtr = (TkWinDrawable *)gc->stipple; - HDC dcMem; - LONG width, height; - HBITMAP oldBitmap; - int i; - HBRUSH oldMemBrush; - - if (twdPtr->type != TWD_BITMAP) { - Tcl_Panic("unexpected drawable type in stipple"); - } - - /* - * Grow the bounding box enough to account for line width. - */ - - rect.left -= gc->line_width; - rect.top -= gc->line_width; - rect.right += gc->line_width; - rect.bottom += gc->line_width; - - width = rect.right - rect.left; - height = rect.bottom - rect.top; - - /* - * Select stipple pattern into destination dc. - */ - - SetBrushOrgEx(dc, gc->ts_x_origin, gc->ts_y_origin, NULL); - oldBrush = SelectObject(dc, CreatePatternBrush(twdPtr->bitmap.handle)); - - /* - * Create temporary drawing surface containing a copy of the - * destination equal in size to the bounding box of the object. - */ - - dcMem = CreateCompatibleDC(dc); - oldBitmap = SelectObject(dcMem, CreateCompatibleBitmap(dc, width, - height)); - oldPen = SelectObject(dcMem, pen); - BitBlt(dcMem, 0, 0, width, height, dc, rect.left, rect.top, SRCCOPY); - - /* - * Translate the object for rendering in the temporary drawing - * surface. - */ - - for (i = 0; i < npoints; i++) { - winPoints[i].x -= rect.left; - winPoints[i].y -= rect.top; - } - - /* - * Draw the object in the foreground color and copy it to the - * destination wherever the pattern is set. - */ - - SetPolyFillMode(dcMem, (gc->fill_rule == EvenOddRule) ? ALTERNATE - : WINDING); - oldMemBrush = SelectObject(dcMem, CreateSolidBrush(gc->foreground)); - (*func)(dcMem, winPoints, npoints); - BitBlt(dc, rect.left, rect.top, width, height, dcMem, 0, 0, COPYFG); - - /* - * If we are rendering an opaque stipple, then draw the polygon in the - * background color and copy it to the destination wherever the pattern - * is clear. - */ - - if (gc->fill_style == FillOpaqueStippled) { - DeleteObject(SelectObject(dcMem, - CreateSolidBrush(gc->background))); - (*func)(dcMem, winPoints, npoints); - BitBlt(dc, rect.left, rect.top, width, height, dcMem, 0, 0, - COPYBG); - } - - SelectObject(dcMem, oldPen); - DeleteObject(SelectObject(dcMem, oldMemBrush)); - DeleteObject(SelectObject(dcMem, oldBitmap)); - DeleteDC(dcMem); - } else { - oldPen = SelectObject(dc, pen); - oldBrush = SelectObject(dc, CreateSolidBrush(gc->foreground)); - SetROP2(dc, tkpWinRopModes[gc->function]); - - SetPolyFillMode(dc, (gc->fill_rule == EvenOddRule) ? ALTERNATE - : WINDING); - - (*func)(dc, winPoints, npoints); - - SelectObject(dc, oldPen); - } - DeleteObject(SelectObject(dc, oldBrush)); -} - -/* - *---------------------------------------------------------------------- - * - * XDrawLines -- - * - * Draw connected lines. - * - * Results: - * None. - * - * Side effects: - * Renders a series of connected lines. - * - *---------------------------------------------------------------------- - */ - -void -XDrawLines(display, d, gc, points, npoints, mode) - Display* display; - Drawable d; - GC gc; - XPoint* points; - int npoints; - int mode; -{ - HPEN pen; - TkWinDCState state; - HDC dc; - TkpClipMask *clipPtr = (TkpClipMask*)gc->clip_mask; - - if (d == None) { - return; - } - - dc = TkWinGetDrawableDC(display, d, &state); - - if (clipPtr && clipPtr->type == TKP_CLIP_REGION) { - SelectClipRgn(dc, (HRGN) clipPtr->value.region); - OffsetClipRgn(dc, gc->clip_x_origin, gc->clip_y_origin); - } - pen = SetUpGraphicsPort(gc); - SetBkMode(dc, TRANSPARENT); - RenderObject(dc, gc, points, npoints, mode, pen, Polyline); - DeleteObject(pen); - - TkWinReleaseDrawableDC(d, dc, &state); -} - -/* - *---------------------------------------------------------------------- - * - * XDrawLine -- - * - * Draw a single line between two points in a given drawable. - * - * Results: - * None. - * - * Side effects: - * Draws a single line segment. - * - *---------------------------------------------------------------------- - */ - -void -XDrawLine(display, d, gc, x1, y1, x2, y2) - Display* display; - Drawable d; - GC gc; - int x1, y1, x2, y2; /* Coordinates of line segment. */ -{ - XPoint points[2]; - - points[0].x = x1; - points[0].y = y1; - points[1].x = x2; - points[1].y = y2; - XDrawLines(display, d, gc, points, 2, CoordModeOrigin); -} - -/* - *---------------------------------------------------------------------- - * - * XFillPolygon -- - * - * Draws a filled polygon. - * - * Results: - * None. - * - * Side effects: - * Draws a filled polygon on the specified drawable. - * - *---------------------------------------------------------------------- - */ - -void -XFillPolygon(display, d, gc, points, npoints, shape, mode) - Display* display; - Drawable d; - GC gc; - XPoint* points; - int npoints; - int shape; - int mode; -{ - HPEN pen; - TkWinDCState state; - HDC dc; - - if (d == None) { - return; - } - - dc = TkWinGetDrawableDC(display, d, &state); - - pen = GetStockObject(NULL_PEN); - RenderObject(dc, gc, points, npoints, mode, pen, Polygon); - - TkWinReleaseDrawableDC(d, dc, &state); -} - -/* - *---------------------------------------------------------------------- - * - * XDrawRectangle -- - * - * Draws a rectangle. - * - * Results: - * None. - * - * Side effects: - * Draws a rectangle on the specified drawable. - * - *---------------------------------------------------------------------- - */ - -void -XDrawRectangle(display, d, gc, x, y, width, height) - Display* display; - Drawable d; - GC gc; - int x; - int y; - unsigned int width; - unsigned int height; -{ - HPEN pen, oldPen; - TkWinDCState state; - HBRUSH oldBrush; - HDC dc; - TkpClipMask *clipPtr = (TkpClipMask*)gc->clip_mask; - - if (d == None) { - return; - } - - dc = TkWinGetDrawableDC(display, d, &state); - - if (clipPtr && clipPtr->type == TKP_CLIP_REGION) { - SelectClipRgn(dc, (HRGN) clipPtr->value.region); - OffsetClipRgn(dc, gc->clip_x_origin, gc->clip_y_origin); - } - pen = SetUpGraphicsPort(gc); - SetBkMode(dc, TRANSPARENT); - oldPen = SelectObject(dc, pen); - oldBrush = SelectObject(dc, GetStockObject(NULL_BRUSH)); - SetROP2(dc, tkpWinRopModes[gc->function]); - - Rectangle(dc, x, y, x+width+1, y+height+1); - - DeleteObject(SelectObject(dc, oldPen)); - SelectObject(dc, oldBrush); - TkWinReleaseDrawableDC(d, dc, &state); -} - -/* - *---------------------------------------------------------------------- - * - * DrawOrFillArc -- - * - * This procedure handles the rendering of drawn or filled - * arcs and chords. - * - * Results: - * None. - * - * Side effects: - * Renders the requested arc. - * - *---------------------------------------------------------------------- - */ - -static void -DrawOrFillArc(display, d, gc, x, y, width, height, start, extent, fill) - Display *display; - Drawable d; - GC gc; - int x, y; /* left top */ - unsigned int width, height; - int start; /* start: three-o'clock (deg*64) */ - int extent; /* extent: relative (deg*64) */ - int fill; /* ==0 draw, !=0 fill */ -{ - HDC dc; - HBRUSH brush, oldBrush; - HPEN pen, oldPen; - TkWinDCState state; - int clockwise = (extent < 0); /* non-zero if clockwise */ - int xstart, ystart, xend, yend; - double radian_start, radian_end, xr, yr; - TkpClipMask *clipPtr = (TkpClipMask*)gc->clip_mask; - - if (d == None) { - return; - } - - dc = TkWinGetDrawableDC(display, d, &state); - - if (clipPtr && clipPtr->type == TKP_CLIP_REGION) { - SelectClipRgn(dc, (HRGN) clipPtr->value.region); - OffsetClipRgn(dc, gc->clip_x_origin, gc->clip_y_origin); - } - SetROP2(dc, tkpWinRopModes[gc->function]); - - /* - * Compute the absolute starting and ending angles in normalized radians. - * Swap the start and end if drawing clockwise. - */ - - start = start % (64*360); - if (start < 0) { - start += (64*360); - } - extent = (start+extent) % (64*360); - if (extent < 0) { - extent += (64*360); - } - if (clockwise) { - int tmp = start; - start = extent; - extent = tmp; - } - radian_start = XAngleToRadians(start); - radian_end = XAngleToRadians(extent); - - /* - * Now compute points on the radial lines that define the starting and - * ending angles. Be sure to take into account that the y-coordinate - * system is inverted. - */ - - if (gc->fill_style == FillStippled && gc->stipple != None) { - xr = width / 2.0; - yr = height / 2.0; - } - else { - xr = x + width / 2.0; - yr = y + height / 2.0; - } - xstart = (int)((xr + cos(radian_start)*width/2.0) + 0.5); - ystart = (int)((yr + sin(-radian_start)*height/2.0) + 0.5); - xend = (int)((xr + cos(radian_end)*width/2.0) + 0.5); - yend = (int)((yr + sin(-radian_end)*height/2.0) + 0.5); - - /* - * Now draw a filled or open figure. Note that we have to - * increase the size of the bounding box by one to account for the - * difference in pixel definitions between X and Windows. - */ - - pen = SetUpGraphicsPort(gc); - oldPen = SelectObject(dc, pen); - if (!fill) { - /* - * Note that this call will leave a gap of one pixel at the - * end of the arc for thin arcs. We can't use ArcTo because - * it's only supported under Windows NT. - */ - - SetBkMode(dc, TRANSPARENT); - Arc(dc, x, y, x+width+1, y+height+1, xstart, ystart, xend, yend); - } else { - brush = CreateSolidBrush(gc->foreground); - - if (gc->fill_style == FillStippled && gc->stipple != None) { - TkWinDrawable *twdPtr = (TkWinDrawable *)gc->stipple; - HBITMAP oldBitmap; - HDC dcMem; - HBRUSH oldMemBrush; - - if (twdPtr->type != TWD_BITMAP) { - Tcl_Panic("unexpected drawable type in stipple"); - } - - /* - * Select stipple pattern into destination dc. - */ - SetBrushOrgEx(dc, gc->ts_x_origin, gc->ts_y_origin, NULL); - oldBrush = SelectObject(dc, - CreatePatternBrush(twdPtr->bitmap.handle)); - - /* - * Create temporary drawing surface containing a copy of the - * destination equal in size to the bounding box of the object. - */ - dcMem = CreateCompatibleDC(dc); - oldBitmap = SelectObject(dcMem, - CreateCompatibleBitmap(dc, width, height)); - BitBlt(dcMem, 0, 0, width, height, dc, x, y, SRCCOPY); - oldMemBrush = SelectObject(dcMem, brush); - if (gc->arc_mode == ArcChord) { - Chord(dcMem, 0, 0, width+1, height+1, xstart, ystart, xend, yend); - } else if ( gc->arc_mode == ArcPieSlice ) { - Pie(dcMem, 0, 0, width+1, height+1, xstart, ystart, xend, yend); - } - - BitBlt(dc, x, y, width, height, dcMem, 0, 0, COPYFG); - DeleteObject(SelectObject(dcMem, oldBitmap)); - DeleteObject(SelectObject(dcMem, oldMemBrush)); - DeleteObject(SelectObject(dc, oldBrush)); - DeleteDC(dcMem); - } else { - oldBrush = SelectObject(dc, brush); - if (gc->arc_mode == ArcChord) { - Chord(dc, x, y, x+width+1, y+height+1, xstart, ystart, xend, yend); - } else if ( gc->arc_mode == ArcPieSlice ) { - Pie(dc, x, y, x+width+1, y+height+1, xstart, ystart, xend, yend); - } - DeleteObject(SelectObject(dc, oldBrush)); - } - } - DeleteObject(SelectObject(dc, oldPen)); - TkWinReleaseDrawableDC(d, dc, &state); -} - -/* - *---------------------------------------------------------------------- - * - * XDrawArc -- - * - * Draw an arc. - * - * Results: - * None. - * - * Side effects: - * Draws an arc on the specified drawable. - * - *---------------------------------------------------------------------- - */ - -void -XDrawArc(display, d, gc, x, y, width, height, start, extent) - Display* display; - Drawable d; - GC gc; - int x; - int y; - unsigned int width; - unsigned int height; - int start; - int extent; -{ - display->request++; - - DrawOrFillArc(display, d, gc, x, y, width, height, start, extent, 0); -} - -/* - *---------------------------------------------------------------------- - * - * XFillArc -- - * - * Draw a filled arc. - * - * Results: - * None. - * - * Side effects: - * Draws a filled arc on the specified drawable. - * - *---------------------------------------------------------------------- - */ - -void -XFillArc(display, d, gc, x, y, width, height, start, extent) - Display* display; - Drawable d; - GC gc; - int x; - int y; - unsigned int width; - unsigned int height; - int start; - int extent; -{ - display->request++; - - DrawOrFillArc(display, d, gc, x, y, width, height, start, extent, 1); -} - -#endif /* _WIN32 */ diff --git a/win/makefile.vc.in b/win/makefile.vc.in deleted file mode 100644 index 62fccd4..0000000 --- a/win/makefile.vc.in +++ /dev/null @@ -1,130 +0,0 @@ -# Generated automatically from Makefile.in by configure. -# Copyright (c) 1993 - 2002 CENA, Patrick Lecoanet -- -# -# This code is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This code is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public -# License along with this code; if not, write to the Free -# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# $Revision$ -# -srcdir = .. -TCLTK_FULL_VER = 8.4.6 -TCLTK_LIB_VER = 84 -TKZINC_MAJOR = @MAJOR_VERSION@ -TKZINC_MINOR = @MINOR_VERSION@ -TKZINC_PATCHLVL = @PATCHLEVEL@ - -# Visual Studio 6 default -TOOLS32 = C:\Progra~1\Microsoft Visual Studio\VC98 -CC = "$(TOOLS32)\bin\cl.exe" -LD = "$(TOOLS32)\bin\link.exe" -link50compat -libpath32 = /LIBPATH:"$(TOOLS32)\lib" -include32 = /I"$(TOOLS32)\include" -CP = copy -RM = del - -prefix = c:\Tcl -exec_prefix = $(prefix) - -bindir = $(exec_prefix)\bin -libdir = $(exec_prefix)\lib -incdir = $(prefix)\include -mandir = $(prefix)\man\man3 - -windir = $(srcdir)\win -genericdir = $(srcdir)\generic -tessdir = $(srcdir)\libtess -tmpdir = $(srcdir) - -tcl_inc_dir = $(srcdir)\..\tcl$(TCLTK_FULL_VER) -tk_inc_dir = $(srcdir)\..\tk$(TCLTK_FULL_VER) -INCLUDES = /I$(srcdir)/generic /I$(srcdir)/libtess $(include32) - -# Assume that WISH is already INSTALLED -TCLSH = $(bindir)\tclsh$(TCLTK_LIB_VER) -WISH = $(bindir)\wish$(TCLTK_LIB_VER) -WIN_LIBS = user32.lib gdi32.lib ws2_32.lib -GL_LIBS = opengl32.lib -TKLIBS = $(libdir)\tcl$(TCLTK_LIB_VER).lib \ - $(libdir)\tk$(TCLTK_LIB_VER).lib \ - $(GL_LIBS) $(WIN_LIBS) - -VERSION = \"$(TKZINC_MAJOR).$(TKZINC_MINOR).$(TKZINC_PATCHLVL)\" - -# -# Recognized compilation time flags are : -# -# PROFILE ask for profile support -# OM include code for internal overlap manager -# GL include code that need GL support. -# GL_PRINT_CONFIG display the detected hardware capabilities -# GL_DAMAGE redraw only modified areas -# SHAPE include code for reshaping windows. -# -DFLAGS= /DOM /DGL /DGL_DAMAGE /DGL_PRINT_CONFIG -#DFLAGS= /DOM -#DFLAGS = /DTCL_MEM_DEBUG - -# Max speed -#CDEBUG = -O2 -Gs -# Debug -CDEBUG = -Z7 -Od -CFLAGS = /c /W3 /nologo /YX $(CDEBUG) /D__STDC__ /DVERSION=$(VERSION) /DDLL_BUILD /DBUILD_Tkzinc $(DFLAGS) -TKCPPFLAGS = /Fp$(tmpdir)\ $(INCLUDES) /I"$(incdir)" /I$(tk_inc_dir)\generic /I$(tk_inc_dir)\win /I$(tcl_inc_dir)\generic /I$(tcl_inc_dir)\win /I$(tk_inc_dir)\xlib /D__STDC__ - -LFLAGS = /nologo /machine:IX86 /warn:3 $(libpath32) /FORCE:MULTIPLE /NODEFAULTLIB:uuid.lib /NODEFAULTLIB:OLDNAMES.lib - -DLLENTRY = @12 -DLLLFLAGS = $(LFLAGS) /entry:_DllMainCRTStartup$(DLLENTRY) /dll - -TKDLLOBJS = $(tmpdir)\Track.obj $(tmpdir)\Tabular.obj \ - $(tmpdir)\Reticle.obj $(tmpdir)\Map.obj \ - $(tmpdir)\Rectangle.obj $(tmpdir)\Arc.obj \ - $(tmpdir)\Curve.obj $(tmpdir)\Item.obj \ -# $(tmpdir)\PostScript.obj $(tmpdir)\perfos.obj \ - $(tmpdir)\MapInfo.obj $(tmpdir)\Attrs.obj \ - $(tmpdir)\Draw.obj $(tmpdir)\Geo.obj \ - $(tmpdir)\List.obj $(tmpdir)\Transfo.obj \ - $(tmpdir)\Group.obj $(tmpdir)\Icon.obj \ - $(tmpdir)\Text.obj $(tmpdir)\Color.obj \ - $(tmpdir)\Field.obj $(tmpdir)\Triangles.obj \ - $(tmpdir)\Window.obj $(tmpdir)\tkZinc.obj \ - $(tmpdir)\OverlapMan.obj $(tmpdir)\WinPort.obj \ - $(tmpdir)\Image.obj $(tmpdir)\dict.obj $(tmpdir)\geom.obj \ - $(tmpdir)\memalloc.obj $(tmpdir)\mesh.obj $(tmpdir)\normal.obj \ - $(tmpdir)\priorityq.obj $(tmpdir)\render.obj \ - $(tmpdir)\sweep.obj $(tmpdir)\tess.obj $(tmpdir)\tessmono.obj - -DLL=Tkzinc$(TKZINC_MAJOR)$(TKZINC_MINOR)$(TKZINC_PATCHLVL).dll - -$(srcdir)/$(DLL): $(TKDLLOBJS) - $(LD) $(DLLLFLAGS) $(TKLIBS) /OUT:$@ $(TKDLLOBJS) - @"$(WISH)" << - package require Tk - pkg_mkIndex -load Tk $(srcdir) $(DLL) - exit -<< - -{$(windir)}.c{$(tmpdir)}.obj: - $(CC) $(TKCPPFLAGS) $(CFLAGS) -Fo$(tmpdir)\ $< - -{$(genericdir)}.c{$(tmpdir)}.obj: - $(CC) $(TKCPPFLAGS) $(CFLAGS) -Fo$(tmpdir)\ $< - -{$(tessdir)}.c{$(tmpdir)}.obj: - $(CC) $(TKCPPFLAGS) $(CFLAGS) -Fo$(tmpdir)\ $< - -mostlyclean: - $(RM) *.bak *~ $(tmpdir)\*.obj -clean: - $(RM) $(tmpdir)\*.obj $(tmpdir)\*.dll $(tmpdir)\*.lib $(tmpdir)\*.exp $(tmpdir)\pkgIndex.tcl $(tmpdir)\*.pch diff --git a/win/package.tcl b/win/package.tcl deleted file mode 100644 index 2351f0b..0000000 --- a/win/package.tcl +++ /dev/null @@ -1,76 +0,0 @@ -# -# This script is intended to be run in the win sub-directory -# with: tclsh84 package.tcl -# -set packager {C:\Program Files\Caphyon\Advanced Installer\AdvancedInstaller.exe} - -# -# Make the Tcl library -# -catch {exec nmake -f makefile.vc} result -puts $result - -# -# Make the Perl library, use for this the -# buildperl script. -# -set wd [pwd] -cd .. -catch {exec tclsh buildperl.tcl} result -puts $result -cd $wd - -# -# Build a merged pkgIndex.tcl -# -set fout [open pkgIndex.tcl w] -set fin [open [file join .. pkgIndex.tcl]] -puts -nonewline $fout [read $fin] -close $fin -set fin [open [file join .. library pkgIndex.tcl]] -foreach line [split [read $fin] \n] { - if {![regexp {^\s*$|^#} $line]} { - puts $fout $line - } -} -close $fin -close $fout - -# -# Build a .bat script for the Perl demos. -# -set fout [open zinc-demos.bat w] -set fin [open [file join .. Perl demos zinc-demos]] -puts $fout {@rem = '--*-Perl-*-- -@echo off -if "%OS%" == "Windows_NT" goto WinNT -perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9 -goto endofperl -:WinNT -perl -x -S %0 %* -if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl -if %errorlevel% == 9009 echo You do not have Perl in your PATH. -if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul -goto endofperl -@rem ';} -puts $fout [read $fin] -puts $fout {__END__ -:endofperl} -close $fin -close $fout - -# -# Create a demo script ending in .tcl -# -file copy -force [file join .. demos zinc-widget] zinc-widget.tcl - -# -# Wrap up the msi packages -# -exec $packager /build Tkzinc.aip -exec $packager /build Tkzincperl.aip - -# -# Clean up after messing around -# -#file delete -force pkgIndex.tcl zinc-widget.tcl zinc-demos.bat -- cgit v1.1