diff options
Diffstat (limited to 'cd/src/x11')
| -rwxr-xr-x | cd/src/x11/cdx11.c | 21 | ||||
| -rwxr-xr-x | cd/src/x11/cdxclp.c | 2 | ||||
| -rwxr-xr-x | cd/src/x11/cdxdbuf.c | 3 | ||||
| -rwxr-xr-x | cd/src/x11/cdximg.c | 2 | ||||
| -rwxr-xr-x | cd/src/x11/cdxnative.c | 2 | 
5 files changed, 19 insertions, 11 deletions
diff --git a/cd/src/x11/cdx11.c b/cd/src/x11/cdx11.c index 94aae39..8c59d48 100755 --- a/cd/src/x11/cdx11.c +++ b/cd/src/x11/cdx11.c @@ -1137,10 +1137,12 @@ static void cdarc(cdCtxCanvas *ctxcanvas, int xc, int yc, int w, int h, double a  {    if (ctxcanvas->canvas->use_matrix)    { -    cdarcSIM(ctxcanvas, xc, yc, w, h, a1, a2); +    cdSimArc(ctxcanvas, xc, yc, w, h, a1, a2);      return;    } +  /* angles in 1/64ths of degrees counterclockwise, similar to CD */ +    cdxCheckSolidStyle(ctxcanvas, 1);    XDrawArc(ctxcanvas->dpy, ctxcanvas->wnd, ctxcanvas->gc, xc-w/2, yc-h/2, w, h, cdRound(a1*64), cdRound((a2 - a1)*64));    cdxCheckSolidStyle(ctxcanvas, 0); @@ -1150,7 +1152,7 @@ static void cdsector(cdCtxCanvas *ctxcanvas, int xc, int yc, int w, int h, doubl  {    if (ctxcanvas->canvas->use_matrix)    { -    cdsectorSIM(ctxcanvas, xc, yc, w, h, a1, a2); +    cdSimSector(ctxcanvas, xc, yc, w, h, a1, a2);      return;    } @@ -1172,7 +1174,7 @@ static void cdchord(cdCtxCanvas *ctxcanvas, int xc, int yc, int w, int h, double  {    if (ctxcanvas->canvas->use_matrix)    { -    cdchordSIM(ctxcanvas, xc, yc, w, h, a1, a2); +    cdSimChord(ctxcanvas, xc, yc, w, h, a1, a2);      return;    } @@ -1194,7 +1196,7 @@ static void cdrect(cdCtxCanvas *ctxcanvas, int xmin, int xmax, int ymin, int yma  {    if (ctxcanvas->canvas->use_matrix)    { -    cdrectSIM(ctxcanvas, xmin, xmax, ymin, ymax); +    cdSimRect(ctxcanvas, xmin, xmax, ymin, ymax);      return;    } @@ -1207,7 +1209,7 @@ static void cdbox(cdCtxCanvas *ctxcanvas, int xmin, int xmax, int ymin, int ymax  {    if (ctxcanvas->canvas->use_matrix)    { -    cdboxSIM(ctxcanvas, xmin, xmax, ymin, ymax); +    cdSimBox(ctxcanvas, xmin, xmax, ymin, ymax);      return;    } @@ -1394,6 +1396,9 @@ void cdxPoly(cdCtxCanvas *ctxcanvas, int mode, cdPoint* poly, int n)    case CD_BEZIER:      cdSimPolyBezier(ctxcanvas->canvas, poly, n);      break; +  case CD_PATH: +    cdSimPolyPath(ctxcanvas->canvas, poly, n); +    break;    }    if (pnt) free(pnt); @@ -2192,8 +2197,11 @@ static cdCtxImage *cdcreateimage (cdCtxCanvas *ctxcanvas, int w, int h)  static void cdgetimage (cdCtxCanvas *ctxcanvas, cdCtxImage *ctximage, int x, int y)  { +  /* y is the bottom-left of the image in CD, must be at upper-left */ +  y -= ctximage->h-1; +    XCopyArea(ctxcanvas->dpy, ctxcanvas->wnd, ctximage->img, ctxcanvas->gc, -            x, y - ctximage->h+1, ctximage->w, ctximage->h, 0, 0); +            x, y, ctximage->w, ctximage->h, 0, 0);  }  static void cdputimagerect (cdCtxCanvas *ctxcanvas, cdCtxImage *ctximage, int x, int y, int xmin, int xmax, int ymin, int ymax) @@ -2243,6 +2251,7 @@ static void set_rotate_attrib(cdCtxCanvas* ctxcanvas, char* data)  {    if (data)    { +    /* use this configuration when there is NO native tranformation support */      sscanf(data, "%g %d %d", &ctxcanvas->rotate_angle,                               &ctxcanvas->rotate_center_x,                               &ctxcanvas->rotate_center_y); diff --git a/cd/src/x11/cdxclp.c b/cd/src/x11/cdxclp.c index d775fde..a2d1b6b 100755 --- a/cd/src/x11/cdxclp.c +++ b/cd/src/x11/cdxclp.c @@ -120,7 +120,7 @@ static void cdinittable(cdCanvas* canvas)  static cdContext cdClipboardContext =  { -  CD_CAP_ALL & ~(CD_CAP_GETIMAGERGB | CD_CAP_IMAGESRV | CD_CAP_FONTDIM | CD_CAP_TEXTSIZE), +  CD_CAP_ALL & ~(CD_CAP_GETIMAGERGB | CD_CAP_IMAGESRV | CD_CAP_FONTDIM | CD_CAP_TEXTSIZE ),  /* same as CD_MF */    0,    cdcreatecanvas,      cdinittable, diff --git a/cd/src/x11/cdxdbuf.c b/cd/src/x11/cdxdbuf.c index 835687c..0f4955e 100755 --- a/cd/src/x11/cdxdbuf.c +++ b/cd/src/x11/cdxdbuf.c @@ -146,8 +146,7 @@ static void cdinittable(cdCanvas* canvas)  static cdContext cdDBufferContext =  { -  CD_CAP_ALL & ~(CD_CAP_PLAY | CD_CAP_YAXIS |  -                 CD_CAP_FPRIMTIVES ), +  CD_CAP_ALL & ~(CD_CAP_PLAY | CD_CAP_YAXIS | CD_CAP_FPRIMTIVES | CD_CAP_PATH | CD_CAP_BEZIER ),    0,    cdcreatecanvas,      cdinittable, diff --git a/cd/src/x11/cdximg.c b/cd/src/x11/cdximg.c index 8131f78..c823705 100755 --- a/cd/src/x11/cdximg.c +++ b/cd/src/x11/cdximg.c @@ -30,7 +30,7 @@ static void cdinittable(cdCanvas* canvas)  static cdContext cdImageContext =  { -  CD_CAP_ALL & ~(CD_CAP_PLAY | CD_CAP_YAXIS | CD_CAP_FPRIMTIVES ), +  CD_CAP_ALL & ~(CD_CAP_PLAY | CD_CAP_YAXIS | CD_CAP_FPRIMTIVES | CD_CAP_PATH | CD_CAP_BEZIER ),    0,    cdcreatecanvas,    cdinittable, diff --git a/cd/src/x11/cdxnative.c b/cd/src/x11/cdxnative.c index c708d20..a69314c 100755 --- a/cd/src/x11/cdxnative.c +++ b/cd/src/x11/cdxnative.c @@ -143,7 +143,7 @@ static void cdinittable(cdCanvas* canvas)  static cdContext cdNativeWindowContext =  { -  CD_CAP_ALL & ~(CD_CAP_PLAY | CD_CAP_YAXIS | CD_CAP_FPRIMTIVES ), +  CD_CAP_ALL & ~(CD_CAP_PLAY | CD_CAP_YAXIS | CD_CAP_FPRIMTIVES | CD_CAP_PATH | CD_CAP_BEZIER),    1,    cdcreatecanvas,    cdinittable,  | 
