diff options
-rw-r--r-- | mak.vc9/cdcore.vcproj | 220 | ||||
-rw-r--r-- | src/drv/cdcgm.c | 8 | ||||
-rw-r--r-- | src/drv/cdpicture.c | 66 | ||||
-rw-r--r-- | src/drv/cdps.c | 2 | ||||
-rw-r--r-- | src/svg/cdsvg.c | 4 |
5 files changed, 185 insertions, 115 deletions
diff --git a/mak.vc9/cdcore.vcproj b/mak.vc9/cdcore.vcproj index 2fdfe8e..93c3a77 100644 --- a/mak.vc9/cdcore.vcproj +++ b/mak.vc9/cdcore.vcproj @@ -89,98 +89,6 @@ </References> <Files> <Filter - Name="INTCGM" - > - <File - RelativePath="..\src\intcgm\bparse.c" - > - </File> - <File - RelativePath="..\src\intcgm\circle.c" - > - </File> - <File - RelativePath="..\src\intcgm\ellipse.c" - > - </File> - <File - RelativePath="..\src\intcgm\intcgm1.c" - > - </File> - <File - RelativePath="..\src\intcgm\intcgm2.c" - > - </File> - <File - RelativePath="..\src\intcgm\intcgm4.c" - > - </File> - <File - RelativePath="..\src\intcgm\intcgm6.c" - > - </File> - <File - RelativePath="..\src\intcgm\list.c" - > - </File> - <File - RelativePath="..\src\intcgm\sism.c" - > - </File> - <File - RelativePath="..\src\intcgm\tparse.c" - > - </File> - <Filter - Name="INC" - > - <File - RelativePath="..\src\intcgm\bparse.h" - > - </File> - <File - RelativePath="..\src\intcgm\circle.h" - > - </File> - <File - RelativePath="..\src\intcgm\ellipse.h" - > - </File> - <File - RelativePath="..\src\intcgm\intcgm.h" - > - </File> - <File - RelativePath="..\src\intcgm\intcgm2.h" - > - </File> - <File - RelativePath="..\src\intcgm\intcgm4.h" - > - </File> - <File - RelativePath="..\src\intcgm\intcgm6.h" - > - </File> - <File - RelativePath="..\src\intcgm\list.h" - > - </File> - <File - RelativePath="..\src\intcgm\sism.h" - > - </File> - <File - RelativePath="..\src\intcgm\tparse.h" - > - </File> - <File - RelativePath="..\src\intcgm\types.h" - > - </File> - </Filter> - </Filter> - <Filter Name="SIM" > <File @@ -319,22 +227,6 @@ RelativePath="..\src\svg\cdsvg.c" > </File> - <File - RelativePath="..\src\drv\cgm.c" - > - <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCLCompilerTool" - WarningLevel="4" - /> - </FileConfiguration> - </File> - <File - RelativePath="..\src\drv\cgm.h" - > - </File> <Filter Name="SVG" > @@ -355,6 +247,118 @@ > </File> </Filter> + <Filter + Name="CGM" + > + <File + RelativePath="..\src\drv\cgm.c" + > + <FileConfiguration + Name="Debug|Win32" + > + <Tool + Name="VCCLCompilerTool" + WarningLevel="4" + /> + </FileConfiguration> + </File> + <File + RelativePath="..\src\drv\cgm.h" + > + </File> + </Filter> + <Filter + Name="INTCGM" + > + <File + RelativePath="..\src\intcgm\bparse.c" + > + </File> + <File + RelativePath="..\src\intcgm\circle.c" + > + </File> + <File + RelativePath="..\src\intcgm\ellipse.c" + > + </File> + <File + RelativePath="..\src\intcgm\intcgm1.c" + > + </File> + <File + RelativePath="..\src\intcgm\intcgm2.c" + > + </File> + <File + RelativePath="..\src\intcgm\intcgm4.c" + > + </File> + <File + RelativePath="..\src\intcgm\intcgm6.c" + > + </File> + <File + RelativePath="..\src\intcgm\list.c" + > + </File> + <File + RelativePath="..\src\intcgm\sism.c" + > + </File> + <File + RelativePath="..\src\intcgm\tparse.c" + > + </File> + <Filter + Name="INC" + > + <File + RelativePath="..\src\intcgm\bparse.h" + > + </File> + <File + RelativePath="..\src\intcgm\circle.h" + > + </File> + <File + RelativePath="..\src\intcgm\ellipse.h" + > + </File> + <File + RelativePath="..\src\intcgm\intcgm.h" + > + </File> + <File + RelativePath="..\src\intcgm\intcgm2.h" + > + </File> + <File + RelativePath="..\src\intcgm\intcgm4.h" + > + </File> + <File + RelativePath="..\src\intcgm\intcgm6.h" + > + </File> + <File + RelativePath="..\src\intcgm\list.h" + > + </File> + <File + RelativePath="..\src\intcgm\sism.h" + > + </File> + <File + RelativePath="..\src\intcgm\tparse.h" + > + </File> + <File + RelativePath="..\src\intcgm\types.h" + > + </File> + </Filter> + </Filter> </Filter> <Filter Name="include" diff --git a/src/drv/cdcgm.c b/src/drv/cdcgm.c index 94b1619..19f6ad7 100644 --- a/src/drv/cdcgm.c +++ b/src/drv/cdcgm.c @@ -567,10 +567,10 @@ static void cdpoly(cdCtxCanvas *ctxcanvas, int mode, cdPoint* poly, int n) cgm_polygon( ctxcanvas->cgm, n, fpoly); break; case CD_BEZIER: - cdfSimPolyBezier(ctxcanvas->canvas, fpoly, n); + cdfSimPolyBezier(ctxcanvas->canvas, (cdfPoint*)fpoly, n); break; case CD_PATH: - cdfSimPolyPath(ctxcanvas->canvas, fpoly, n); + cdfSimPolyPath(ctxcanvas->canvas, (cdfPoint*)fpoly, n); break; } @@ -602,10 +602,10 @@ static void cdfpoly(cdCtxCanvas *ctxcanvas, int mode, cdfPoint* poly, int n) cgm_polygon( ctxcanvas->cgm, n, fpoly); break; case CD_BEZIER: - cdfSimPolyBezier(ctxcanvas->canvas, fpoly, n); + cdfSimPolyBezier(ctxcanvas->canvas, poly, n); break; case CD_PATH: - cdfSimPolyPath(ctxcanvas->canvas, fpoly, n); + cdfSimPolyPath(ctxcanvas->canvas, poly, n); break; } } diff --git a/src/drv/cdpicture.c b/src/drv/cdpicture.c index 4cbc5d5..8cd586e 100644 --- a/src/drv/cdpicture.c +++ b/src/drv/cdpicture.c @@ -1243,6 +1243,72 @@ static int cdplay(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax, void cdfCanvasVertex(canvas, prim->param.polyf.points[p].x, prim->param.polyf.points[p].y); cdCanvasEnd(canvas); break; + case CDPIC_PATH: + if (prim->param.path.fill) + primUpdateAttrib_Fill(prim, canvas); + else + primUpdateAttrib_Line(prim, canvas); + cdCanvasBegin(canvas, CD_PATH); + n = 0; + for (p=0; p<prim->param.path.path_n; p++) + { + cdCanvasPathSet(canvas, prim->param.path.path[p]); + + switch(prim->param.path.path[p]) + { + case CD_PATH_MOVETO: + case CD_PATH_LINETO: + if (n+1 > n) break; + cdCanvasVertex(canvas, prim->param.path.points[n].x, prim->param.path.points[n].y); + n++; + break; + case CD_PATH_CURVETO: + case CD_PATH_ARC: + { + if (n+3 > n) break; + cdCanvasVertex(canvas, prim->param.path.points[n].x, prim->param.path.points[n].y); + cdCanvasVertex(canvas, prim->param.path.points[n+1].x, prim->param.path.points[n+1].y); + cdCanvasVertex(canvas, prim->param.path.points[n+2].x, prim->param.path.points[n+2].y); + n += 3; + } + break; + } + } + cdCanvasEnd(canvas); + break; + case CDPIC_FPATH: + if (prim->param.path.fill) + primUpdateAttrib_Fill(prim, canvas); + else + primUpdateAttrib_Line(prim, canvas); + cdCanvasBegin(canvas, CD_PATH); + n = 0; + for (p=0; p<prim->param.pathf.path_n; p++) + { + cdCanvasPathSet(canvas, prim->param.pathf.path[p]); + + switch(prim->param.pathf.path[p]) + { + case CD_PATH_MOVETO: + case CD_PATH_LINETO: + if (n+1 > n) break; + cdfCanvasVertex(canvas, prim->param.pathf.points[n].x, prim->param.pathf.points[n].y); + n++; + break; + case CD_PATH_CURVETO: + case CD_PATH_ARC: + { + if (n+3 > n) break; + cdfCanvasVertex(canvas, prim->param.pathf.points[n].x, prim->param.pathf.points[n].y); + cdfCanvasVertex(canvas, prim->param.pathf.points[n+1].x, prim->param.pathf.points[n+1].y); + cdfCanvasVertex(canvas, prim->param.pathf.points[n+2].x, prim->param.pathf.points[n+2].y); + n += 3; + } + break; + } + } + cdCanvasEnd(canvas); + break; case CDPIC_IMAGERGB: cdCanvasPutImageRectRGB(canvas, prim->param.imagergba.iw, prim->param.imagergba.ih, prim->param.imagergba.r, prim->param.imagergba.g, prim->param.imagergba.b, prim->param.imagergba.x, prim->param.imagergba.y, prim->param.imagergba.w, prim->param.imagergba.h, 0, 0, 0, 0); break; diff --git a/src/drv/cdps.c b/src/drv/cdps.c index 5c40103..abd061c 100644 --- a/src/drv/cdps.c +++ b/src/drv/cdps.c @@ -1893,7 +1893,7 @@ static cdAttribute rotate_attrib = static void set_cmd_attrib(cdCtxCanvas *ctxcanvas, char* data) { - fprintf(ctxcanvas->file, data); + fprintf(ctxcanvas->file, "%s", data); } static cdAttribute cmd_attrib = diff --git a/src/svg/cdsvg.c b/src/svg/cdsvg.c index 677a91f..a1fdf8e 100644 --- a/src/svg/cdsvg.c +++ b/src/svg/cdsvg.c @@ -1196,7 +1196,7 @@ static void set_opacity_attrib(cdCtxCanvas *ctxcanvas, char* data) static char* get_opacity_attrib(cdCtxCanvas *ctxcanvas) { static char data[50]; - sprintf(data, "%d", ctxcanvas->opacity); + sprintf(data, "%d", cdRound(ctxcanvas->opacity*255.0)); return data; } @@ -1209,7 +1209,7 @@ static cdAttribute opacity_attrib = static void set_cmd_attrib(cdCtxCanvas *ctxcanvas, char* data) { - fprintf(ctxcanvas->file, data); + fprintf(ctxcanvas->file, "%s", data); } static cdAttribute cmd_attrib = |