static void PPTX_Circle(double x, double y, double r, const pGEcontext gc, pDevDesc dev) { DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; int idx = get_and_increment_idx(dev); fputs(pptx_elt_tag_start, pd->dmlFilePointer ); if( pd->editable < 1 ) fprintf(pd->dmlFilePointer, "<p:nvSpPr><p:cNvPr id=\"%d\" name=\"Point %d\" />%s</p:nvSpPr>", idx, idx, pptx_lock_properties); else fprintf(pd->dmlFilePointer, "<p:nvSpPr><p:cNvPr id=\"%d\" name=\"Point %d\" />%s</p:nvSpPr>", idx, idx, pptx_unlock_properties); fputs("<p:spPr><a:xfrm>", pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "<a:off x=\"%.0f\" y=\"%.0f\"/>", p2e_(pd->offx + x - r), p2e_(pd->offy + y - r)); fprintf(pd->dmlFilePointer, "<a:ext cx=\"%.0f\" cy=\"%.0f\"/>", p2e_(r * 2), p2e_(r * 2)); fputs( "</a:xfrm><a:prstGeom prst=\"ellipse\"><a:avLst /></a:prstGeom>", pd->dmlFilePointer ); DML_SetLineSpec(dev, gc); DML_SetFillColor(dev, gc); fputs( "</p:spPr>", pd->dmlFilePointer ); fputs( "<p:txBody><a:bodyPr /><a:lstStyle /><a:p/></p:txBody>", pd->dmlFilePointer ); fputs(pptx_elt_tag_end, pd->dmlFilePointer ); fflush(pd->dmlFilePointer); }
static void PPTX_Line(double x1, double y1, double x2, double y2, const pGEcontext gc, pDevDesc dev) { DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; int idx = get_and_increment_idx(dev); double maxx = 0, maxy = 0; double minx = 0, miny = 0; DOC_ClipLine(x1, y1, x2, y2, dev); x1 = pd->clippedx0;y1 = pd->clippedy0; x2 = pd->clippedx1;y2 = pd->clippedy1; if (x2 > x1) { maxx = x2; minx = x1; } else { maxx = x1; minx = x2; } if (y2 > y1) { maxy = y2; miny = y1; } else { maxy = y1; miny = y2; } fputs(pptx_elt_tag_start, pd->dmlFilePointer ); if( pd->editable < 1 ) fprintf(pd->dmlFilePointer, "<p:nvSpPr><p:cNvPr id=\"%d\" name=\"Line %d\" />%s</p:nvSpPr>", idx, idx, pptx_lock_properties); else fprintf(pd->dmlFilePointer, "<p:nvSpPr><p:cNvPr id=\"%d\" name=\"Line %d\" />%s</p:nvSpPr>", idx, idx, pptx_unlock_properties); fputs( "<p:spPr><a:xfrm>", pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "<a:off x=\"%.0f\" y=\"%.0f\"/>" , p2e_(pd->offx + minx), p2e_(pd->offy + miny)); fprintf(pd->dmlFilePointer, "<a:ext cx=\"%.0f\" cy=\"%.0f\"/>", p2e_(maxx-minx), p2e_(maxy-miny)); fputs( "</a:xfrm><a:custGeom><a:avLst />", pd->dmlFilePointer ); fputs( "<a:pathLst>", pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "<a:path w=\"%.0f\" h=\"%.0f\">", p2e_(maxx-minx), p2e_(maxy-miny)); fprintf(pd->dmlFilePointer, "<a:moveTo><a:pt x=\"%.0f\" y=\"%.0f\" /></a:moveTo>", p2e_(x1 - minx), p2e_(y1 - miny) ); fprintf(pd->dmlFilePointer, "<a:lnTo><a:pt x=\"%.0f\" y=\"%.0f\" /></a:lnTo>", p2e_(x2 - minx), p2e_(y2 - miny)); fputs( "</a:path></a:pathLst>", pd->dmlFilePointer ); fputs( "</a:custGeom>", pd->dmlFilePointer ); DML_SetLineSpec(dev, gc); fputs( "</p:spPr>", pd->dmlFilePointer ); fputs( "<p:txBody><a:bodyPr /><a:lstStyle /><a:p/></p:txBody>", pd->dmlFilePointer ); fputs(pptx_elt_tag_end, pd->dmlFilePointer ); // fprintf(pd->dmlFilePointer, "\n"); fflush(pd->dmlFilePointer); //return; }
static void PPTX_Polygon(int n, double *x, double *y, const pGEcontext gc, pDevDesc dev) { DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; int idx = get_and_increment_idx(dev); int i; double maxx = 0, maxy = 0; for (i = 0; i < n; i++) { if (x[i] > maxx) maxx = x[i]; if (y[i] > maxy) maxy = y[i]; } double minx = maxx, miny = maxy; for (i = 0; i < n; i++) { if (x[i] < minx) minx = x[i]; if (y[i] < miny) miny = y[i]; } fputs(pptx_elt_tag_start, pd->dmlFilePointer ); if( pd->editable < 1 ) fprintf(pd->dmlFilePointer, "<p:nvSpPr><p:cNvPr id=\"%d\" name=\"Polygon form %d\" />%s</p:nvSpPr>", idx, idx, pptx_lock_properties); else fprintf(pd->dmlFilePointer, "<p:nvSpPr><p:cNvPr id=\"%d\" name=\"Polygon form %d\" />%s</p:nvSpPr>", idx, idx, pptx_unlock_properties); fputs("<p:spPr><a:xfrm>", pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "<a:off x=\"%.0f\" y=\"%.0f\"/>", p2e_(pd->offx + minx), p2e_(pd->offy + miny)); fprintf(pd->dmlFilePointer, "<a:ext cx=\"%.0f\" cy=\"%.0f\"/>", p2e_(maxx-minx), p2e_(maxy-miny)); fputs("</a:xfrm><a:custGeom><a:avLst />", pd->dmlFilePointer ); fputs("<a:pathLst>", pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "<a:path w=\"%.0f\" h=\"%.0f\">", p2e_(maxx-minx), p2e_(maxy-miny)); fprintf(pd->dmlFilePointer, "<a:moveTo><a:pt x=\"%.0f\" y=\"%.0f\" /></a:moveTo>", p2e_(x[0] - minx), p2e_(y[0] - miny)); for (i = 1; i < n; i++) { fprintf(pd->dmlFilePointer, "<a:lnTo><a:pt x=\"%.0f\" y=\"%.0f\" /></a:lnTo>", p2e_(x[i] - minx), p2e_(y[i] - miny)); } fputs("<a:close/></a:path></a:pathLst>", pd->dmlFilePointer ); fputs("</a:custGeom>", pd->dmlFilePointer ); DML_SetFillColor(dev, gc); DML_SetLineSpec(dev, gc); fputs("</p:spPr>", pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "<p:txBody><a:bodyPr /><a:lstStyle /><a:p/></p:txBody>"); fputs(pptx_elt_tag_end, pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "\n"); fflush(pd->dmlFilePointer); }
static void PPTX_Rect(double x0, double y0, double x1, double y1, const pGEcontext gc, pDevDesc dev) { double tmp; DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; int idx = get_and_increment_idx(dev); if (x0 >= x1) { tmp = x0; x0 = x1; x1 = tmp; } if (y0 >= y1) { tmp = y0; y0 = y1; y1 = tmp; } DOC_ClipRect(x0, y0, x1, y1, dev); x0 = pd->clippedx0;y0 = pd->clippedy0; x1 = pd->clippedx1;y1 = pd->clippedy1; fputs(pptx_elt_tag_start, pd->dmlFilePointer ); if( pd->editable < 1 ) fprintf(pd->dmlFilePointer, "<p:nvSpPr><p:cNvPr id=\"%d\" name=\"Rectangle %d\" />%s</p:nvSpPr>", idx, idx, pptx_lock_properties); else fprintf(pd->dmlFilePointer, "<p:nvSpPr><p:cNvPr id=\"%d\" name=\"Rectangle %d\" />%s</p:nvSpPr>", idx, idx, pptx_unlock_properties); fputs("<p:spPr><a:xfrm>", pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "<a:off x=\"%.0f\" y=\"%.0f\"/>", p2e_(pd->offx + x0), p2e_(pd->offy + y0)); fprintf(pd->dmlFilePointer, "<a:ext cx=\"%.0f\" cy=\"%.0f\"/>", p2e_(x1 - x0), p2e_(y1 - y0)); fputs("</a:xfrm><a:prstGeom prst=\"rect\"><a:avLst /></a:prstGeom>", pd->dmlFilePointer ); DML_SetFillColor(dev, gc); DML_SetLineSpec(dev, gc); fputs("</p:spPr>", pd->dmlFilePointer ); fputs("<p:txBody><a:bodyPr /><a:lstStyle /><a:p/></p:txBody>", pd->dmlFilePointer ); fputs(pptx_elt_tag_end, pd->dmlFilePointer ); // fprintf(pd->dmlFilePointer, "\n"); fflush(pd->dmlFilePointer); }
static void DOCX_Line(double x1, double y1, double x2, double y2, const pGEcontext gc, pDevDesc dev) { double maxx = 0, maxy = 0; double minx = 0, miny = 0; if (x2 > x1) { maxx = x2; minx = x1; } else { maxx = x1; minx = x2; } if (y2 > y1) { maxy = y2; miny = y1; } else { maxy = y1; miny = y2; } DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; int idx = get_and_increment_idx(dev); fputs(docx_elt_tag_start, pd->dmlFilePointer ); if( pd->editable > 0 ) fprintf(pd->dmlFilePointer, "<wps:cNvPr id=\"%d\" name=\"Line %d\" />%s", idx, idx, docx_unlock_properties); else fprintf(pd->dmlFilePointer, "<wps:cNvPr id=\"%d\" name=\"Line %d\" />%s", idx, idx, docx_lock_properties); fputs("<wps:spPr>", pd->dmlFilePointer ); fputs("<a:xfrm>", pd->dmlFilePointer );//fprintf(pd->dmlFilePointer, "<a:xfrm>"); fprintf(pd->dmlFilePointer, "<a:off x=\"%.0f\" y=\"%.0f\"/>" , p2e_(pd->offx + minx), p2e_(pd->offy + miny)); fprintf(pd->dmlFilePointer, "<a:ext cx=\"%.0f\" cy=\"%.0f\"/>" , p2e_(maxx-minx), p2e_(maxy-miny)); fputs("</a:xfrm>", pd->dmlFilePointer ); fputs("<a:custGeom>", pd->dmlFilePointer ); fputs("<a:pathLst>", pd->dmlFilePointer ); fprintf(pd->dmlFilePointer, "<a:path w=\"%.0f\" h=\"%.0f\">", p2e_(maxx-minx), p2e_(maxy-miny)); fprintf(pd->dmlFilePointer, "<a:moveTo><a:pt x=\"%.0f\" y=\"%.0f\" /></a:moveTo>", p2e_(x1 - minx), p2e_(y1 - miny)); fprintf(pd->dmlFilePointer, "<a:lnTo><a:pt x=\"%.0f\" y=\"%.0f\" /></a:lnTo>", p2e_(x2 - minx), p2e_(y2 - miny)); fputs("</a:path>", pd->dmlFilePointer ); fputs("</a:pathLst>", pd->dmlFilePointer ); fputs("</a:custGeom><a:noFill />", pd->dmlFilePointer ); DML_SetLineSpec(dev, gc); fputs("</wps:spPr>", pd->dmlFilePointer ); fputs("<wps:bodyPr />", pd->dmlFilePointer ); fputs(docx_elt_tag_end, pd->dmlFilePointer ); //fprintf(pd->dmlFilePointer, "\n"); fflush(pd->dmlFilePointer); //return; }