/** \file * \brief Scintilla control: Line wrapping * * See Copyright Notice in "iup.h" */ #include #include #include #include #include #include "iup.h" #include "iup_object.h" #include "iup_attrib.h" #include "iup_str.h" #include "iupsci.h" /***** PRINTING **** SCI_SETPRINTMAGNIFICATION(int magnification) SCI_GETPRINTMAGNIFICATION SCI_SETPRINTCOLOURMODE(int mode) SCI_GETPRINTCOLOURMODE SCI_SETPRINTWRAPMODE SCI_GETPRINTWRAPMODE */ static char* iScintillaGetPrintMagnificationAttrib(Ihandle* ih) { int magnification = (int)IupScintillaSendMessage(ih, SCI_GETPRINTMAGNIFICATION, 0, 0); return iupStrReturnInt(magnification); } static int iScintillaSetPrintMagnificationAttrib(Ihandle* ih, const char* value) { int magnification; if (iupStrToInt(value, &magnification)) IupScintillaSendMessage(ih, SCI_SETPRINTMAGNIFICATION, magnification, 0); return 0; } static char* iScintillaGetPrintWrapAttrib(Ihandle *ih) { int type = (int)IupScintillaSendMessage(ih, SCI_GETPRINTWRAPMODE, 0, 0); /* CHAR is NOT supported when printing */ if(type == SC_WRAP_WORD) return "WORD"; else return "NONE"; } static int iScintillaSetPrintWrapAttrib(Ihandle *ih, const char *value) { if (iupStrEqualNoCase(value, "WORD")) IupScintillaSendMessage(ih, SCI_SETPRINTWRAPMODE, SC_WRAP_WORD, 0); else IupScintillaSendMessage(ih, SCI_SETPRINTWRAPMODE, SC_WRAP_NONE, 0); /* CHAR is NOT supported when printing */ return 0; } static char* iScintillaGetPrintColorAttrib(Ihandle *ih) { int type = (int)IupScintillaSendMessage(ih, SCI_GETPRINTCOLOURMODE, 0, 0); if (type == SC_PRINT_COLOURONWHITEDEFAULTBG) return "COLORONWHITEDEFAULTBG"; else if (type == SC_PRINT_COLOURONWHITE) return "COLORONWHITE"; else if (type == SC_PRINT_BLACKONWHITE) return "BLACKONWHITE"; else if (type == SC_PRINT_INVERTLIGHT) return "INVERTLIGHT"; else return "NORMAL"; } static int iScintillaSetPrintColorAttrib(Ihandle *ih, const char *value) { if (iupStrEqualNoCase(value, "COLORONWHITEDEFAULTBG")) IupScintillaSendMessage(ih, SCI_SETPRINTCOLOURMODE, SC_PRINT_COLOURONWHITEDEFAULTBG, 0); else if (iupStrEqualNoCase(value, "COLORONWHITE")) IupScintillaSendMessage(ih, SCI_SETPRINTCOLOURMODE, SC_PRINT_COLOURONWHITE, 0); else if (iupStrEqualNoCase(value, "BLACKONWHITE")) IupScintillaSendMessage(ih, SCI_SETPRINTCOLOURMODE, SC_PRINT_BLACKONWHITE, 0); else if (iupStrEqualNoCase(value, "INVERTLIGHT")) IupScintillaSendMessage(ih, SCI_SETPRINTCOLOURMODE, SC_PRINT_INVERTLIGHT, 0); else IupScintillaSendMessage(ih, SCI_SETPRINTCOLOURMODE, SC_PRINT_NORMAL, 0); return 0; } int iupSciGetPrintMarginUnits(Ihandle* ih) { char* units = iupAttribGetStr(ih, "PRINTMARGINUNITS"); if (iupStrEqualNoCase(units, "INCH")) return PRINTUNITS_INCH; else if (iupStrEqualNoCase(units, "CM")) return PRINTUNITS_CM; else return PRINTUNITS_PIXELS; } int iupSciGetPrintMargin(Ihandle* ih, const char* margin_attrib, int units, double dpi) { double margin = IupGetDouble(ih, margin_attrib); if (units == PRINTUNITS_PIXELS) return (int)margin; else if (units == PRINTUNITS_INCH) return (int)(margin * dpi); else return (int)((margin * dpi) / 2.54); } void iupScintillaRegisterPrint(Iclass* ic) { iupClassRegisterAttribute(ic, "PRINT", NULL, iupdrvScintillaPrintAttrib, NULL, NULL, IUPAF_WRITEONLY | IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTDIALOG", NULL, NULL, IUPAF_SAMEASSYSTEM, "YES", IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTMARGINLEFT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTMARGINTOP", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTMARGINRIGHT", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTMARGINBOTTOM", NULL, NULL, NULL, NULL, IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTMARGINUNITS", NULL, NULL, IUPAF_SAMEASSYSTEM, "INCH", IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTWORDWRAP", iScintillaGetPrintWrapAttrib, iScintillaSetPrintWrapAttrib, IUPAF_SAMEASSYSTEM, "WORD", IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTCOLOR", iScintillaGetPrintColorAttrib, iScintillaSetPrintColorAttrib, IUPAF_SAMEASSYSTEM, "NORMAL", IUPAF_NO_INHERIT); iupClassRegisterAttribute(ic, "PRINTMAGNIFICATION", iScintillaGetPrintMagnificationAttrib, iScintillaSetPrintMagnificationAttrib, NULL, NULL, IUPAF_NO_INHERIT); }