void DOCX_setRunProperties(pDevDesc dev, R_GE_gcontext *gc, double fontsize){ DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; int alpha = (int) ((255-R_ALPHA(gc->col))/255.0 * 100000);//n importe quoi int fontface = gc->fontface; fprintf(pd->dmlFilePointer, "<w:rPr>" ); fprintf(pd->dmlFilePointer, "<w:rFonts w:ascii=\"%s\" w:hAnsi=\"%s\" w:cs=\"%s\" />", pd->fi->fontname, pd->fi->fontname, pd->fi->fontname ); if ( fontface == 2 || fontface == 4 ) { fprintf(pd->dmlFilePointer, "<w:b />"); } if (fontface == 3 || fontface == 4) { fprintf(pd->dmlFilePointer, "<w:i />"); } fprintf(pd->dmlFilePointer, "<w:color w:val=\"%s\" />", RGBHexValue(gc->col) ); fprintf(pd->dmlFilePointer, "<w:sz w:val=\"%.0f\" />", fontsize * 2 ); fprintf(pd->dmlFilePointer, "<w:szCs w:val=\"%.0f\" />", fontsize * 2 ); if (alpha > 0) { fprintf(pd->dmlFilePointer, "<w14:textFill>" ); fprintf(pd->dmlFilePointer, "<w14:solidFill>" ); fprintf(pd->dmlFilePointer, "<w14:srgbClr w14:val=\"%s\">", RGBHexValue(gc->col) ); fprintf(pd->dmlFilePointer, "<w14:alpha w14:val=\"%d\" />", alpha); fprintf(pd->dmlFilePointer, "</w14:srgbClr>"); fprintf(pd->dmlFilePointer, "</w14:solidFill>" ); fprintf(pd->dmlFilePointer, "</w14:textFill>" ); } fprintf(pd->dmlFilePointer, "</w:rPr>" ); }
void RAPHAEL_SetFontSpec(pDevDesc dev, R_GE_gcontext *gc, int idx) { DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; char *saved_locale; saved_locale = setlocale(LC_NUMERIC, "C"); float alpha = R_ALPHA(gc->col)/255.0; double fontsize = getFontSize(gc->cex, gc->ps, gc->lineheight); if ( gc->cex > 0.0 && alpha > 0 ) { fprintf(pd->dmlFilePointer, "elt_%d.attr({", idx); fprintf(pd->dmlFilePointer, "'fill': \"#%s\"", RGBHexValue(gc->col) ); fprintf(pd->dmlFilePointer, ", 'fill-opacity': \"%.3f\"", alpha ); fprintf(pd->dmlFilePointer, ", 'font-family': \"%s\"", pd->fi->fontname ); fprintf(pd->dmlFilePointer, ", 'font-size': \"%.0f\"", fontsize ); if (gc->fontface == 2) { fputs(", 'font-weight': \"bold\"", pd->dmlFilePointer ); } else if (gc->fontface == 3) { fputs(", 'font-style':\"italic\"", pd->dmlFilePointer ); } else if (gc->fontface == 4) { fputs(", 'font-weight': \"bold\", 'font-style':\"italic\"", pd->dmlFilePointer ); } fputs("});\n", pd->dmlFilePointer ); } setlocale(LC_NUMERIC, saved_locale); }
void RAPHAEL_SetLineSpec(pDevDesc dev, R_GE_gcontext *gc, int idx) { DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; char *saved_locale; saved_locale = setlocale(LC_NUMERIC, "C"); float alpha = R_ALPHA(gc->col)/255.0; fprintf(pd->dmlFilePointer, "elt_%d.attr({", idx); if (gc->lty > -1 && gc->lwd > 0.0 && alpha > 0) { fprintf(pd->dmlFilePointer, "'stroke': \"#%s\"", RGBHexValue(gc->col) ); fprintf(pd->dmlFilePointer, ", 'stroke-opacity': \"%.3f\"", alpha ); fprintf(pd->dmlFilePointer, ", 'stroke-width': %.3f", gc->lwd ); switch (gc->lty) { case LTY_BLANK: break; case LTY_SOLID: break; case LTY_DOTTED: fputs(", 'stroke-dasharray': \".\"", pd->dmlFilePointer ); break; case LTY_DASHED: fputs(", 'stroke-dasharray': \"-\"", pd->dmlFilePointer ); break; case LTY_LONGDASH: fputs(", 'stroke-dasharray': \"--\"", pd->dmlFilePointer ); break; case LTY_DOTDASH: fputs(", 'stroke-dasharray': \"-.\"", pd->dmlFilePointer ); break; case LTY_TWODASH: fputs(", 'stroke-dasharray': \"--\"", pd->dmlFilePointer ); break; default: break; } switch (gc->ljoin) { case GE_ROUND_JOIN: //round fputs(", 'stroke-linejoin': \"round\"", pd->dmlFilePointer ); break; case GE_MITRE_JOIN: //mitre fputs(", 'stroke-linejoin': \"miter\"", pd->dmlFilePointer ); break; case GE_BEVEL_JOIN: //bevel fputs(", 'stroke-linejoin': \"bevel\"", pd->dmlFilePointer ); break; default: fputs(", 'stroke-linejoin': \"round\"", pd->dmlFilePointer ); break; } } else { fputs("'stroke-width': 0", pd->dmlFilePointer ); } fputs("});\n", pd->dmlFilePointer ); setlocale(LC_NUMERIC, saved_locale); }
void RAPHAEL_SetFillColor(pDevDesc dev, R_GE_gcontext *gc, int idx) { DOCDesc *pd = (DOCDesc *) dev->deviceSpecific; char *saved_locale; saved_locale = setlocale(LC_NUMERIC, "C"); fprintf(pd->dmlFilePointer, "elt_%d.attr({", idx); float alpha = R_ALPHA(gc->fill)/255.0; if (alpha > 0) { fprintf(pd->dmlFilePointer, "'fill': \"#%s\"", RGBHexValue(gc->fill) ); fprintf(pd->dmlFilePointer, ",'fill-opacity': \"%.3f\"", alpha ); } fputs("});\n", pd->dmlFilePointer ); setlocale(LC_NUMERIC, saved_locale); }