summaryrefslogtreecommitdiffstats
path: root/win/tkWinGDI.c
diff options
context:
space:
mode:
Diffstat (limited to 'win/tkWinGDI.c')
-rw-r--r--win/tkWinGDI.c464
1 files changed, 226 insertions, 238 deletions
diff --git a/win/tkWinGDI.c b/win/tkWinGDI.c
index f05bebc..969606b 100644
--- a/win/tkWinGDI.c
+++ b/win/tkWinGDI.c
@@ -36,30 +36,18 @@ typedef BOOL WINAPI (*DrawFunc) (
#endif
/* Real functions. */
-static int GdiArc(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiBitmap(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiCharWidths(ClientData clientData,
- Tcl_Interp *interp, int argc, const char **argv);
-static int GdiImage(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiPhoto(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiLine(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiOval(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiPolygon(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiRectangle(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiText(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiMap(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
-static int GdiCopyBits(ClientData clientData, Tcl_Interp *interp,
- int argc, const char **argv);
+static Tcl_ObjCmdProc GdiArc;
+static Tcl_ObjCmdProc GdiBitmap;
+static Tcl_ObjCmdProc GdiCharWidths;
+static Tcl_ObjCmdProc GdiImage;
+static Tcl_ObjCmdProc GdiPhoto;
+static Tcl_ObjCmdProc GdiLine;
+static Tcl_ObjCmdProc GdiOval;
+static Tcl_ObjCmdProc GdiPolygon;
+static Tcl_ObjCmdProc GdiRectangle;
+static Tcl_ObjCmdProc GdiText;
+static Tcl_ObjCmdProc GdiMap;
+static Tcl_ObjCmdProc GdiCopyBits;
/* Local copies of similar routines elsewhere in Tcl/Tk. */
static int GdiGetColor(const char *name, COLORREF *color);
@@ -136,7 +124,7 @@ static HDC printDC;
static const struct gdi_command {
const char *command_string;
- Tcl_CmdProc *command;
+ Tcl_ObjCmdProc *command;
} gdi_commands[] = {
{ "arc", GdiArc },
{ "bitmap", GdiBitmap },
@@ -169,7 +157,7 @@ static int GdiArc(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi arc hdc x1 y1 x2 y2 "
@@ -202,45 +190,45 @@ static int GdiArc(
hDC = printDC;
- x1 = atoi(argv[2]);
- y1 = atoi(argv[3]);
- x2 = atoi(argv[4]);
- y2 = atoi(argv[5]);
+ x1 = atoi(Tcl_GetString(objv[2]));
+ y1 = atoi(Tcl_GetString(objv[3]));
+ x2 = atoi(Tcl_GetString(objv[4]));
+ y2 = atoi(Tcl_GetString(objv[5]));
argc -= 6;
- argv += 6;
+ objv += 6;
while (argc >= 2) {
- if (strcmp(argv[0], "-extent") == 0) {
- extent = atof(argv[1]);
- } else if (strcmp(argv[0], "-start") == 0) {
- start = atof(argv[1]);
- } else if (strcmp(argv[0], "-style") == 0) {
- if (strcmp(argv[1], "pieslice") == 0) {
+ if (strcmp(Tcl_GetString(objv[0]), "-extent") == 0) {
+ extent = atof(Tcl_GetString(objv[1]));
+ } else if (strcmp(Tcl_GetString(objv[0]), "-start") == 0) {
+ start = atof(Tcl_GetString(objv[1]));
+ } else if (strcmp(Tcl_GetString(objv[0]), "-style") == 0) {
+ if (strcmp(Tcl_GetString(objv[1]), "pieslice") == 0) {
drawfunc = Pie;
- } else if (strcmp(argv[1], "arc") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[1]), "arc") == 0) {
drawfunc = Arc;
- } else if (strcmp(argv[1], "chord") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[1]), "chord") == 0) {
drawfunc = Chord;
}
- } else if (strcmp(argv[0], "-fill") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-fill") == 0) {
/* Handle all args, even if we don't use them yet. */
- if (GdiGetColor(argv[1], &fillcolor)) {
+ if (GdiGetColor(Tcl_GetString(objv[1]), &fillcolor)) {
dofillcolor = 1;
}
- } else if (strcmp(argv[0], "-outline") == 0) {
- if (GdiGetColor(argv[1], &linecolor)) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-outline") == 0) {
+ if (GdiGetColor(Tcl_GetString(objv[1]), &linecolor)) {
dolinecolor = 1;
}
- } else if (strcmp(argv[0], "-outlinestipple") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-outlinestipple") == 0) {
/* ignored */
- } else if (strcmp(argv[0], "-stipple") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-stipple") == 0) {
/* ignored */
- } else if (strcmp(argv[0], "-width") == 0) {
- width = atoi(argv[1]);
- } else if (strcmp(argv[0], "-dash") == 0) {
- if (argv[1]) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-width") == 0) {
+ width = atoi(Tcl_GetString(objv[1]));
+ } else if (strcmp(Tcl_GetString(objv[0]), "-dash") == 0) {
+ if (Tcl_GetString(objv[1])) {
dodash = 1;
- dashdata = argv[1];
+ dashdata = Tcl_GetString(objv[1]);
}
} else {
/* Don't know that option! */
@@ -248,7 +236,7 @@ static int GdiArc(
return TCL_ERROR;
}
argc -= 2;
- argv += 2;
+ objv += 2;
}
xr0 = xr1 = (x1 + x2) / 2;
yr0 = yr1 = (y1 + y2) / 2;
@@ -323,7 +311,7 @@ static int GdiBitmap(
TCL_UNUSED(void *),
Tcl_Interp *interp,
TCL_UNUSED(int),
- TCL_UNUSED(const char **))
+ TCL_UNUSED(Tcl_Obj *const *))
{
static const char usage_message[] =
"::tk::print::_gdi bitmap hdc x y "
@@ -359,7 +347,7 @@ static int GdiImage(
TCL_UNUSED(void *),
Tcl_Interp *interp,
TCL_UNUSED(int),
- TCL_UNUSED(const char **))
+ TCL_UNUSED(Tcl_Obj *const *))
{
static const char usage_message[] =
"::tk::print::_gdi image hdc x y -anchor [center|n|e|s|w] -image name\n"
@@ -395,7 +383,7 @@ static int GdiPhoto(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi photo hdc [-destination x y [w [h]]] -photo name\n";
@@ -433,19 +421,19 @@ static int GdiPhoto(
if ((GetDeviceCaps(dst, RASTERCAPS) & RC_STRETCHDIB) == 0) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"::tk::print::_gdi photo not supported on device context (0x%s)",
- argv[1]));
+ Tcl_GetString(objv[1])));
return TCL_ERROR;
}
/* Parse the command line arguments. */
for (j = 2; j < argc; j++) {
- if (strcmp(argv[j], "-destination") == 0) {
+ if (strcmp(Tcl_GetString(objv[j]), "-destination") == 0) {
double x, y, w, h;
int count = 0;
char dummy;
if (j < argc) {
- count = sscanf(argv[++j], "%lf%lf%lf%lf%c",
+ count = sscanf(Tcl_GetString(objv[++j]), "%lf%lf%lf%lf%c",
&x, &y, &w, &h, &dummy);
}
@@ -466,8 +454,8 @@ static int GdiPhoto(
dst_w = (int) w;
dst_h = (int) h;
}
- } else if (strcmp(argv[j], "-photo") == 0) {
- photoname = argv[++j];
+ } else if (strcmp(Tcl_GetString(objv[j]), "-photo") == 0) {
+ photoname = Tcl_GetString(objv[++j]);
}
}
@@ -653,7 +641,7 @@ static int GdiLine(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi line hdc x1 y1 ... xn yn "
@@ -701,27 +689,27 @@ static int GdiLine(
Tcl_AppendResult(interp, "Out of memory in GdiLine", NULL);
return TCL_ERROR;
}
- polypoints[0].x = atol(argv[2]);
- polypoints[0].y = atol(argv[3]);
- polypoints[1].x = atol(argv[4]);
- polypoints[1].y = atol(argv[5]);
+ polypoints[0].x = atol(Tcl_GetString(objv[2]));
+ polypoints[0].y = atol(Tcl_GetString(objv[3]));
+ polypoints[1].x = atol(Tcl_GetString(objv[4]));
+ polypoints[1].y = atol(Tcl_GetString(objv[5]));
argc -= 6;
- argv += 6;
+ objv += 6;
npoly = 2;
while (argc >= 2) {
/* Check for a number. */
- x = strtoul(argv[0], &strend, 0);
- if (strend > argv[0]) {
+ x = strtoul(Tcl_GetString(objv[0]), &strend, 0);
+ if (strend > Tcl_GetString(objv[0])) {
/* One number.... */
- y = strtoul(argv[1], &strend, 0);
- if (strend > argv[1]) {
+ y = strtoul(Tcl_GetString(objv[1]), &strend, 0);
+ if (strend > Tcl_GetString(objv[1])) {
/* TWO numbers!. */
polypoints[npoly].x = x;
polypoints[npoly].y = y;
npoly++;
argc -= 2;
- argv += 2;
+ objv += 2;
} else {
/* Only one number... Assume a usage error. */
Tcl_Free((void *)polypoints);
@@ -729,24 +717,24 @@ static int GdiLine(
return TCL_ERROR;
}
} else {
- if (strcmp(*argv, "-arrow") == 0) {
- if (strcmp(argv[1], "none") == 0) {
+ if (strcmp(Tcl_GetString(*objv), "-arrow") == 0) {
+ if (strcmp(Tcl_GetString(objv[1]), "none") == 0) {
doarrow = 0;
- } else if (strcmp(argv[1], "both") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[1]), "both") == 0) {
doarrow = 3;
- } else if (strcmp(argv[1], "first") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[1]), "first") == 0) {
doarrow = 2;
- } else if (strcmp(argv[1], "last") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[1]), "last") == 0) {
doarrow = 1;
}
- argv += 2;
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-arrowshape") == 0) {
+ } else if (strcmp(Tcl_GetString(*objv), "-arrowshape") == 0) {
/* List of 3 numbers--set arrowshape array. */
int a1, a2, a3;
char dummy;
- if (sscanf(argv[1], "%d%d%d%c", &a1, &a2, &a3, &dummy) == 3
+ if (sscanf(Tcl_GetString(objv[1]), "%d%d%d%c", &a1, &a2, &a3, &dummy) == 3
&& a1 > 0 && a2 > 0 && a3 > 0) {
arrowshape[0] = a1;
arrowshape[1] = a2;
@@ -754,24 +742,24 @@ static int GdiLine(
}
/* Else the argument was bad. */
- argv += 2;
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-capstyle") == 0) {
- argv += 2;
+ } else if (strcmp(Tcl_GetString(*objv), "-capstyle") == 0) {
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-fill") == 0) {
- if (GdiGetColor(argv[1], &linecolor)) {
+ } else if (strcmp(Tcl_GetString(*objv), "-fill") == 0) {
+ if (GdiGetColor(Tcl_GetString(objv[1]), &linecolor)) {
dolinecolor = 1;
}
- argv += 2;
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-joinstyle") == 0) {
- argv += 2;
+ } else if (strcmp(Tcl_GetString(*objv), "-joinstyle") == 0) {
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-smooth") == 0) {
+ } else if (strcmp(Tcl_GetString(*objv), "-smooth") == 0) {
/* Argument is true/false or 1/0 or bezier. */
- if (argv[1]) {
- switch (argv[1][0]) {
+ if (Tcl_GetString(objv[1])) {
+ switch (Tcl_GetString(objv[1])[0]) {
case 't': case 'T':
case '1':
case 'b': case 'B': /* bezier. */
@@ -781,33 +769,33 @@ static int GdiLine(
dosmooth = 0;
break;
}
- argv += 2;
+ objv += 2;
argc -= 2;
}
- } else if (strcmp(*argv, "-splinesteps") == 0) {
- nStep = atoi(argv[1]);
- argv += 2;
+ } else if (strcmp(Tcl_GetString(*objv), "-splinesteps") == 0) {
+ nStep = atoi(Tcl_GetString(objv[1]));
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-dash") == 0) {
- if (argv[1]) {
+ } else if (strcmp(Tcl_GetString(*objv), "-dash") == 0) {
+ if (Tcl_GetString(objv[1])) {
dodash = 1;
- dashdata = argv[1];
+ dashdata = Tcl_GetString(objv[1]);
}
- argv += 2;
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-dashoffset") == 0) {
- argv += 2;
+ } else if (strcmp(Tcl_GetString(*objv), "-dashoffset") == 0) {
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-stipple") == 0) {
- argv += 2;
+ } else if (strcmp(Tcl_GetString(*objv), "-stipple") == 0) {
+ objv += 2;
argc -= 2;
- } else if (strcmp(*argv, "-width") == 0) {
- width = atoi(argv[1]);
- argv += 2;
+ } else if (strcmp(Tcl_GetString(*objv), "-width") == 0) {
+ width = atoi(Tcl_GetString(objv[1]));
+ objv += 2;
argc -= 2;
} else { /* It's an unknown argument!. */
argc--;
- argv++;
+ objv++;
}
/* Check for arguments
* Most of the arguments affect the "Pen"
@@ -947,7 +935,7 @@ static int GdiOval(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi oval hdc x1 y1 x2 y2 -fill color -outline color "
@@ -973,10 +961,10 @@ static int GdiOval(
hDC = printDC;
- x1 = atol(argv[2]);
- y1 = atol(argv[3]);
- x2 = atol(argv[4]);
- y2 = atol(argv[5]);
+ x1 = atol(Tcl_GetString(objv[2]));
+ y1 = atol(Tcl_GetString(objv[3]));
+ x2 = atol(Tcl_GetString(objv[4]));
+ y2 = atol(Tcl_GetString(objv[5]));
if (x1 > x2) {
int x3 = x1;
x1 = x2;
@@ -988,31 +976,31 @@ static int GdiOval(
y2 = y3;
}
argc -= 6;
- argv += 6;
+ objv += 6;
while (argc > 0) {
/* Now handle any other arguments that occur. */
- if (strcmp(argv[0], "-fill") == 0) {
- if (argv[1] && GdiGetColor(argv[1], &fillcolor)) {
+ if (strcmp(Tcl_GetString(objv[0]), "-fill") == 0) {
+ if (Tcl_GetString(objv[1]) && GdiGetColor(Tcl_GetString(objv[1]), &fillcolor)) {
dofillcolor = 1;
}
- } else if (strcmp(argv[0], "-outline") == 0) {
- if (argv[1] && GdiGetColor(argv[1], &linecolor)) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-outline") == 0) {
+ if (Tcl_GetString(objv[1]) && GdiGetColor(Tcl_GetString(objv[1]), &linecolor)) {
dolinecolor = 1;
}
- } else if (strcmp(argv[0], "-stipple") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-stipple") == 0) {
/* Not actually implemented */
- } else if (strcmp(argv[0], "-width") == 0) {
- if (argv[1]) {
- width = atoi(argv[1]);
+ } else if (strcmp(Tcl_GetString(objv[0]), "-width") == 0) {
+ if (Tcl_GetString(objv[1])) {
+ width = atoi(Tcl_GetString(objv[1]));
}
- } else if (strcmp(argv[0], "-dash") == 0) {
- if (argv[1]) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-dash") == 0) {
+ if (Tcl_GetString(objv[1])) {
dodash = 1;
- dashdata = argv[1];
+ dashdata = Tcl_GetString(objv[1]);
}
}
- argv += 2;
+ objv += 2;
argc -= 2;
}
@@ -1062,7 +1050,7 @@ static int GdiPolygon(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi polygon hdc x1 y1 ... xn yn "
@@ -1101,27 +1089,27 @@ static int GdiPolygon(
Tcl_AppendResult(interp, "Out of memory in GdiLine", NULL);
return TCL_ERROR;
}
- polypoints[0].x = atol(argv[2]);
- polypoints[0].y = atol(argv[3]);
- polypoints[1].x = atol(argv[4]);
- polypoints[1].y = atol(argv[5]);
+ polypoints[0].x = atol(Tcl_GetString(objv[2]));
+ polypoints[0].y = atol(Tcl_GetString(objv[3]));
+ polypoints[1].x = atol(Tcl_GetString(objv[4]));
+ polypoints[1].y = atol(Tcl_GetString(objv[5]));
argc -= 6;
- argv += 6;
+ objv += 6;
npoly = 2;
while (argc >= 2) {
/* Check for a number */
- x = strtoul(argv[0], &strend, 0);
- if (strend > argv[0]) {
+ x = strtoul(Tcl_GetString(objv[0]), &strend, 0);
+ if (strend > Tcl_GetString(objv[0])) {
/* One number.... */
- y = strtoul(argv[1], &strend, 0);
- if (strend > argv[1]) {
+ y = strtoul(Tcl_GetString(objv[1]), &strend, 0);
+ if (strend > Tcl_GetString(objv[1])) {
/* TWO numbers!. */
polypoints[npoly].x = x;
polypoints[npoly].y = y;
npoly++;
argc -= 2;
- argv += 2;
+ objv += 2;
} else {
/* Only one number... Assume a usage error. */
Tcl_Free((void *) polypoints);
@@ -1133,17 +1121,17 @@ static int GdiPolygon(
* Check for arguments.
* Most of the arguments affect the "Pen" and "Brush".
*/
- if (strcmp(argv[0], "-fill") == 0) {
- if (argv[1] && GdiGetColor(argv[1], &fillcolor)) {
+ if (strcmp(Tcl_GetString(objv[0]), "-fill") == 0) {
+ if (Tcl_GetString(objv[1]) && GdiGetColor(Tcl_GetString(objv[1]), &fillcolor)) {
dofillcolor = 1;
}
- } else if (strcmp(argv[0], "-outline") == 0) {
- if (GdiGetColor(argv[1], &linecolor)) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-outline") == 0) {
+ if (GdiGetColor(Tcl_GetString(objv[1]), &linecolor)) {
dolinecolor = 0;
}
- } else if (strcmp(argv[0], "-smooth") == 0) {
- if (argv[1]) {
- switch (argv[1][0]) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-smooth") == 0) {
+ if (Tcl_GetString(objv[1])) {
+ switch (Tcl_GetString(objv[1])[0]) {
case 't': case 'T':
case '1':
case 'b': case 'B': /* bezier. */
@@ -1154,24 +1142,24 @@ static int GdiPolygon(
break;
}
}
- } else if (strcmp(argv[0], "-splinesteps") == 0) {
- if (argv[1]) {
- nStep = atoi(argv[1]);
+ } else if (strcmp(Tcl_GetString(objv[0]), "-splinesteps") == 0) {
+ if (Tcl_GetString(objv[1])) {
+ nStep = atoi(Tcl_GetString(objv[1]));
}
- } else if (strcmp(argv[0], "-stipple") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-stipple") == 0) {
/* Not supported */
- } else if (strcmp(argv[0], "-width") == 0) {
- if (argv[1]) {
- width = atoi(argv[1]);
+ } else if (strcmp(Tcl_GetString(objv[0]), "-width") == 0) {
+ if (Tcl_GetString(objv[1])) {
+ width = atoi(Tcl_GetString(objv[1]));
}
- } else if (strcmp(argv[0], "-dash") == 0) {
- if (argv[1]) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-dash") == 0) {
+ if (Tcl_GetString(objv[1])) {
dodash = 1;
- dashdata = argv[1];
+ dashdata = Tcl_GetString(objv[1]);
}
}
argc -= 2;
- argv += 2;
+ objv += 2;
}
}
@@ -1232,7 +1220,7 @@ static int GdiRectangle(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi rectangle hdc x1 y1 x2 y2 "
@@ -1260,10 +1248,10 @@ static int GdiRectangle(
hDC = printDC;
- x1 = atol(argv[2]);
- y1 = atol(argv[3]);
- x2 = atol(argv[4]);
- y2 = atol(argv[5]);
+ x1 = atol(Tcl_GetString(objv[2]));
+ y1 = atol(Tcl_GetString(objv[3]));
+ x2 = atol(Tcl_GetString(objv[4]));
+ y2 = atol(Tcl_GetString(objv[5]));
if (x1 > x2) {
int x3 = x1;
x1 = x2;
@@ -1275,33 +1263,33 @@ static int GdiRectangle(
y2 = y3;
}
argc -= 6;
- argv += 6;
+ objv += 6;
/* Now handle any other arguments that occur. */
while (argc > 1) {
- if (strcmp(argv[0], "-fill") == 0) {
- if (argv[1] && GdiGetColor(argv[1], &fillcolor)) {
+ if (strcmp(Tcl_GetString(objv[0]), "-fill") == 0) {
+ if (Tcl_GetString(objv[1]) && GdiGetColor(Tcl_GetString(objv[1]), &fillcolor)) {
dofillcolor = 1;
}
- } else if (strcmp(argv[0], "-outline") == 0) {
- if (argv[1] && GdiGetColor(argv[1], &linecolor)) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-outline") == 0) {
+ if (Tcl_GetString(objv[1]) && GdiGetColor(Tcl_GetString(objv[1]), &linecolor)) {
dolinecolor = 1;
}
- } else if (strcmp(argv[0], "-stipple") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-stipple") == 0) {
/* Not supported; ignored */
- } else if (strcmp(argv[0], "-width") == 0) {
- if (argv[1]) {
- width = atoi(argv[1]);
+ } else if (strcmp(Tcl_GetString(objv[0]), "-width") == 0) {
+ if (Tcl_GetString(objv[1])) {
+ width = atoi(Tcl_GetString(objv[1]));
}
- } else if (strcmp(argv[0], "-dash") == 0) {
- if (argv[1]) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-dash") == 0) {
+ if (Tcl_GetString(objv[1])) {
dodash = 1;
- dashdata = argv[1];
+ dashdata = Tcl_GetString(objv[1]);
}
}
argc -= 2;
- argv += 2;
+ objv += 2;
}
/*
@@ -1358,7 +1346,7 @@ static int GdiCharWidths(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi characters hdc [-font fontname] [-array ary]";
@@ -1386,27 +1374,27 @@ static int GdiCharWidths(
hDC = printDC;
argc -= 2;
- argv += 2;
+ objv += 2;
while (argc > 0) {
- if (strcmp(argv[0], "-font") == 0) {
+ if (strcmp(Tcl_GetString(objv[0]), "-font") == 0) {
argc--;
- argv++;
- if (GdiMakeLogFont(interp, argv[0], &lf, hDC)) {
+ objv++;
+ if (GdiMakeLogFont(interp, Tcl_GetString(objv[0]), &lf, hDC)) {
if ((hfont = CreateFontIndirectW(&lf)) != NULL) {
made_font = 1;
oldfont = SelectObject(hDC, hfont);
}
}
/* Else leave the font alone!. */
- } else if (strcmp(argv[0], "-array") == 0) {
- argv++;
+ } else if (strcmp(Tcl_GetString(objv[0]), "-array") == 0) {
+ objv++;
argc--;
if (argc > 0) {
- aryvarname = argv[0];
+ aryvarname = Tcl_GetString(objv[0]);
}
}
- argv++;
+ objv++;
argc--;
}
@@ -1472,7 +1460,7 @@ int GdiText(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi text hdc x y -anchor [center|n|e|s|w] "
@@ -1508,76 +1496,76 @@ int GdiText(
hDC = printDC;
- x = atol(argv[2]);
- y = atol(argv[3]);
+ x = atol(Tcl_GetString(objv[2]));
+ y = atol(Tcl_GetString(objv[3]));
argc -= 4;
- argv += 4;
+ objv += 4;
sizerect.left = sizerect.right = x;
sizerect.top = sizerect.bottom = y;
while (argc > 0) {
- if (strcmp(argv[0], "-anchor") == 0) {
+ if (strcmp(Tcl_GetString(objv[0]), "-anchor") == 0) {
argc--;
- argv++;
+ objv++;
if (argc > 0) {
- Tk_GetAnchor(interp, argv[0], &anchor);
+ Tk_GetAnchor(interp, Tcl_GetString(objv[0]), &anchor);
}
- } else if (strcmp(argv[0], "-justify") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-justify") == 0) {
argc--;
- argv++;
+ objv++;
if (argc > 0) {
- if (strcmp(argv[0], "left") == 0) {
+ if (strcmp(Tcl_GetString(objv[0]), "left") == 0) {
format_flags |= DT_LEFT;
- } else if (strcmp(argv[0], "center") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "center") == 0) {
format_flags |= DT_CENTER;
- } else if (strcmp(argv[0], "right") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "right") == 0) {
format_flags |= DT_RIGHT;
}
}
- } else if (strcmp(argv[0], "-text") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-text") == 0) {
argc--;
- argv++;
+ objv++;
if (argc > 0) {
- string = argv[0];
+ string = Tcl_GetString(objv[0]);
}
- } else if (strcmp(argv[0], "-font") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-font") == 0) {
argc--;
- argv++;
- if (GdiMakeLogFont(interp, argv[0], &lf, hDC)) {
+ objv++;
+ if (GdiMakeLogFont(interp, Tcl_GetString(objv[0]), &lf, hDC)) {
if ((hfont = CreateFontIndirectW(&lf)) != NULL) {
made_font = 1;
oldfont = SelectObject(hDC, hfont);
}
}
/* Else leave the font alone! */
- } else if (strcmp(argv[0], "-stipple") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-stipple") == 0) {
argc--;
- argv++;
+ objv++;
/* Not implemented yet. */
- } else if (strcmp(argv[0], "-fill") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-fill") == 0) {
argc--;
- argv++;
+ objv++;
/* Get text color. */
- if (GdiGetColor(argv[0], &textcolor)) {
+ if (GdiGetColor(Tcl_GetString(objv[0]), &textcolor)) {
dotextcolor = 1;
}
- } else if (strcmp(argv[0], "-width") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-width") == 0) {
argc--;
- argv++;
+ objv++;
if (argc > 0) {
- sizerect.right += atol(argv[0]);
+ sizerect.right += atol(Tcl_GetString(objv[0]));
}
/* If a width is specified, break at words. */
format_flags |= DT_WORDBREAK;
- } else if (strcmp(argv[0], "-single") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-single") == 0) {
usesingle = 1;
- } else if (strcmp(argv[0], "-backfill") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[0]), "-backfill") == 0) {
dobgmode = 1;
}
argc--;
- argv++;
+ objv++;
}
if (string == 0) {
@@ -1820,7 +1808,7 @@ static int GdiMap(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
static const char usage_message[] =
"::tk::print::_gdi map hdc "
@@ -1858,25 +1846,25 @@ static int GdiMap(
/* Parse remaining arguments. */
for (argno = 2; argno < argc; argno++) {
- if (strcmp(argv[argno], "-default") == 0) {
+ if (strcmp(Tcl_GetString(objv[argno]), "-default") == 0) {
vextent.cx = vextent.cy = wextent.cx = wextent.cy = 1;
vorigin.x = vorigin.y = worigin.x = worigin.y = 0;
mapmode = MM_TEXT;
use_default = 1;
- } else if (strcmp(argv[argno], "-mode") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[argno]), "-mode") == 0) {
if (argno + 1 >= argc) {
need_usage = 1;
} else {
- mapmode = GdiNameToMode(argv[argno + 1]);
+ mapmode = GdiNameToMode(Tcl_GetString(objv[argno + 1]));
use_mode = 1;
argno++;
}
- } else if (strcmp(argv[argno], "-offset") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[argno]), "-offset") == 0) {
if (argno + 1 >= argc) {
need_usage = 1;
} else {
/* It would be nice if this parsed units as well.... */
- if (sscanf(argv[argno + 1], "%ld%ld",
+ if (sscanf(Tcl_GetString(objv[argno + 1]), "%ld%ld",
&vorigin.x, &vorigin.y) == 2) {
use_offset = 1;
} else {
@@ -1884,7 +1872,7 @@ static int GdiMap(
}
argno++;
}
- } else if (strcmp(argv[argno], "-logical") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[argno]), "-logical") == 0) {
if (argno + 1 >= argc) {
need_usage = 1;
} else {
@@ -1892,7 +1880,7 @@ static int GdiMap(
argno++;
/* In "real-life", this should parse units as well.. */
- if ((count = sscanf(argv[argno], "%ld%ld",
+ if ((count = sscanf(Tcl_GetString(objv[argno]), "%ld%ld",
&wextent.cx, &wextent.cy)) != 2) {
if (count == 1) {
mapmode = MM_ISOTROPIC;
@@ -1906,7 +1894,7 @@ static int GdiMap(
use_logical = 2;
}
}
- } else if (strcmp(argv[argno], "-physical") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[argno]), "-physical") == 0) {
if (argno + 1 >= argc) {
need_usage = 1;
} else {
@@ -1914,7 +1902,7 @@ static int GdiMap(
argno++;
/* In "real-life", this should parse units as well.. */
- if ((count = sscanf(argv[argno], "%ld%ld",
+ if ((count = sscanf(Tcl_GetString(objv[argno]), "%ld%ld",
&vextent.cx, &vextent.cy)) != 2) {
if (count == 1) {
mapmode = MM_ISOTROPIC;
@@ -2003,7 +1991,7 @@ static int GdiCopyBits(
TCL_UNUSED(void *),
Tcl_Interp *interp,
int argc,
- const char **argv)
+ Tcl_Obj *const *objv)
{
/* Goal: get the Tk_Window from the top-level
* convert it to an HWND
@@ -2083,10 +2071,10 @@ static int GdiCopyBits(
/* Loop through the remaining arguments. */
for (k=2; k<argc; k++) {
- if (strcmp(argv[k], "-window") == 0) {
- if (argv[k+1] && argv[k+1][0] == '.') {
+ if (strcmp(Tcl_GetString(objv[k]), "-window") == 0) {
+ if (Tcl_GetString(objv[k+1]) && Tcl_GetString(objv[k+1])[0] == '.') {
do_window = 1;
- workwin = Tk_NameToWindow(interp, window_spec = argv[++k], mainWin);
+ workwin = Tk_NameToWindow(interp, window_spec = Tcl_GetString(objv[++k]), mainWin);
if (workwin == NULL) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
"Can't find window %s in this application",
@@ -2096,21 +2084,21 @@ static int GdiCopyBits(
} else {
/* Use strtoul() so octal or hex representations will be
* parsed. */
- hwnd = (HWND) INT2PTR(strtoul(argv[++k], &strend, 0));
- if (strend == 0 || strend == argv[k]) {
+ hwnd = (HWND) INT2PTR(strtoul(Tcl_GetString(objv[++k]), &strend, 0));
+ if (strend == 0 || strend == Tcl_GetString(objv[k])) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "Can't understand window id %s", argv[k]));
+ "Can't understand window id %s", Tcl_GetString(objv[k])));
return TCL_ERROR;
}
}
- } else if (strcmp(argv[k], "-screen") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[k]), "-screen") == 0) {
do_screen = 1;
wintype = PTScreen;
- } else if (strcmp(argv[k], "-client") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[k]), "-client") == 0) {
wintype = PTClient;
- } else if (strcmp(argv[k], "-source") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[k]), "-source") == 0) {
float a, b, c, d;
- int count = sscanf(argv[++k], "%f%f%f%f", &a, &b, &c, &d);
+ int count = sscanf(Tcl_GetString(objv[++k]), "%f%f%f%f", &a, &b, &c, &d);
if (count < 2) { /* Can't make heads or tails of it.... */
Tcl_AppendResult(interp, usage_message, NULL);
@@ -2122,11 +2110,11 @@ static int GdiCopyBits(
src_w = (int)c;
src_h = (int)d;
}
- } else if (strcmp(argv[k], "-destination") == 0) {
+ } else if (strcmp(Tcl_GetString(objv[k]), "-destination") == 0) {
float a, b, c, d;
int count;
- count = sscanf(argv[++k], "%f%f%f%f", &a, &b, &c, &d);
+ count = sscanf(Tcl_GetString(objv[++k]), "%f%f%f%f", &a, &b, &c, &d);
if (count < 2) { /* Can't make heads or tails of it.... */
Tcl_AppendResult(interp, usage_message, NULL);
return TCL_ERROR;
@@ -2140,20 +2128,20 @@ static int GdiCopyBits(
dst_w = (int)c;
dst_h = (int)d;
}
- } else if (strcmp(argv[k], "-scale") == 0) {
- if (argv[++k]) {
- if (Tcl_GetDouble(interp, argv[k], &scale) != TCL_OK) {
+ } else if (strcmp(Tcl_GetString(objv[k]), "-scale") == 0) {
+ if (Tcl_GetString(objv[++k])) {
+ if (Tcl_GetDouble(interp, Tcl_GetString(objv[k]), &scale) != TCL_OK) {
return TCL_ERROR;
}
if (scale <= 0.01 || scale >= 100.0) {
Tcl_SetObjResult(interp, Tcl_ObjPrintf(
- "Unreasonable scale specification %s", argv[k]));
+ "Unreasonable scale specification %s", Tcl_GetString(objv[k])));
return TCL_ERROR;
}
do_scale = 1;
}
- } else if (strcmp(argv[k], "-noprint") == 0
- || strncmp(argv[k], "-calc", 5) == 0) {
+ } else if (strcmp(Tcl_GetString(objv[k]), "-noprint") == 0
+ || strncmp(Tcl_GetString(objv[k]), "-calc", 5) == 0) {
/* This option suggested by Pascal Bouvier to get sizes without
* printing. */
do_print = 0;
@@ -3537,7 +3525,7 @@ int Winprint_Init(
char buffer[100];
snprintf(buffer, sizeof(buffer), "%s::%s", gdiName, gdi_commands[i].command_string);
- Tcl_CreateCommand(interp, buffer, gdi_commands[i].command,
+ Tcl_CreateObjCommand(interp, buffer, gdi_commands[i].command,
NULL, (Tcl_CmdDeleteProc *) 0);
Tcl_Export(interp, namespacePtr, gdi_commands[i].command_string, 0);
}