#ifndef _BUILD_NATIVE_GRAPHICS_EMBED_H_ #define _BUILD_NATIVE_GRAPHICS_EMBED_H_ #include "../../graphics/pro/Fonts.h" #include "../js_internal/js_base.h" class CGraphicsAppImage_private; class JS_DECL CGraphicsAppImage { public: CGraphicsAppImage(); virtual ~CGraphicsAppImage(); public: void SetFontsDirectory(const std::wstring& dir); std::wstring GetFontsDirectory(); void SetImagesDirectory(const std::wstring& dir); std::wstring GetImagesDirectory(); void SetThemesDirectory(const std::wstring& dir); std::wstring GetThemesDirectory(); void SetFonts(NSFonts::IApplicationFonts* fonts); NSFonts::IApplicationFonts* GetFonts(); void SetRgba(const bool& isRgba); bool GetRgba(); virtual unsigned char* GetBits(int& w, int& h); virtual unsigned char* AllocBits(const int& w, const int& h); private: CGraphicsAppImage_private* m_internal; friend class CGraphicsEmbed; }; namespace NSGraphics { class CGraphics; } using namespace NSJSBase; class JS_DECL CGraphicsEmbed : public CJSEmbedObject { public: NSGraphics::CGraphics* m_pInternal; public: CGraphicsEmbed(); ~CGraphicsEmbed(); virtual void* getObject() override { return (void*)m_pInternal; } CGraphicsAppImage* GetAppImage(); void SetAppImage(CGraphicsAppImage* appImage); public: JSSmart create(JSSmart Native, JSSmart width_px, JSSmart height_px, JSSmart width_mm, JSSmart height_mm); JSSmart Destroy(); JSSmart EndDraw(); JSSmart put_GlobalAlpha(JSSmart enable, JSSmart globalAlpha); JSSmart Start_GlobalAlpha(); JSSmart End_GlobalAlpha(); // pen methods JSSmart p_color(JSSmart r, JSSmart g, JSSmart b, JSSmart a); JSSmart p_width(JSSmart w); JSSmart p_dash(JSSmart params); // brush methods JSSmart b_color1(JSSmart r, JSSmart g, JSSmart b, JSSmart a); JSSmart b_color2(JSSmart r, JSSmart g, JSSmart b, JSSmart a); JSSmart transform(JSSmart sx, JSSmart shy, JSSmart shx, JSSmart sy, JSSmart tx, JSSmart ty); JSSmart CalculateFullTransform(JSSmart isInvertNeed); // path commands JSSmart _s(); JSSmart _e(); JSSmart _z(); JSSmart _m (JSSmart x, JSSmart y); JSSmart _l (JSSmart x, JSSmart y); JSSmart _c (JSSmart x1, JSSmart y1, JSSmart x2, JSSmart y2, JSSmart x3, JSSmart y3); JSSmart _c2(JSSmart x1, JSSmart y1, JSSmart x2, JSSmart y2); JSSmart ds(); JSSmart df(); // canvas state JSSmart save(); JSSmart restore(); JSSmart clip(); JSSmart reset(); JSSmart FreeFont(); JSSmart ClearLastFont(); // images JSSmart drawImage2(JSSmart img, JSSmart x, JSSmart y, JSSmart w, JSSmart h, JSSmart alpha, JSSmart srcRect); JSSmart drawImage (JSSmart img, JSSmart x, JSSmart y, JSSmart w, JSSmart h, JSSmart alpha, JSSmart srcRect, JSSmart nativeImage); // text JSSmart GetFont(); JSSmart font(JSSmart font_id, JSSmart font_size); JSSmart SetFont(JSSmart path, JSSmart face, JSSmart size, JSSmart style); JSSmart GetTextPr(); JSSmart FillText(JSSmart x, JSSmart y, JSSmart text); JSSmart t(JSSmart x, JSSmart y, JSSmart _arr); JSSmart FillText2(JSSmart x, JSSmart y, JSSmart text, JSSmart cropX, JSSmart cropW); JSSmart t2(JSSmart text, JSSmart x, JSSmart y, JSSmart cropX, JSSmart cropW); JSSmart FillTextCode(JSSmart x, JSSmart y, JSSmart lUnicode); JSSmart tg(JSSmart text, JSSmart x, JSSmart y); JSSmart charspace(JSSmart space); // private methods JSSmart private_FillGlyph (JSSmart pGlyph, JSSmart _bounds); JSSmart private_FillGlyphC(JSSmart pGlyph, JSSmart cropX, JSSmart cropW); JSSmart private_FillGlyph2(JSSmart pGlyph); JSSmart SetIntegerGrid(JSSmart param); JSSmart GetIntegerGrid(); JSSmart DrawStringASCII (JSSmart text, JSSmart x, JSSmart y); JSSmart DrawStringASCII2(JSSmart text, JSSmart x, JSSmart y); JSSmart DrawHeaderEdit(JSSmart yPos, JSSmart lock_type, JSSmart sectionNum, JSSmart bIsRepeat, JSSmart type); JSSmart DrawFooterEdit(JSSmart yPos, JSSmart lock_type, JSSmart sectionNum, JSSmart bIsRepeat, JSSmart type); JSSmart DrawLockParagraph (JSSmart x, JSSmart y1, JSSmart y2); JSSmart DrawLockObjectRect(JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart DrawEmptyTableLine(JSSmart x1, JSSmart y1, JSSmart x2, JSSmart y2); JSSmart DrawSpellingLine (JSSmart y0, JSSmart x0, JSSmart x1, JSSmart w); // smart methods for horizontal / vertical lines JSSmart drawHorLine (JSSmart align, JSSmart y, JSSmart x, JSSmart r, JSSmart penW); JSSmart drawHorLine2(JSSmart align, JSSmart y, JSSmart x, JSSmart r, JSSmart penW); JSSmart drawVerLine (JSSmart align, JSSmart x, JSSmart y, JSSmart b, JSSmart penW); JSSmart drawHorLineExt(JSSmart align, JSSmart y, JSSmart x, JSSmart r, JSSmart penW, JSSmart leftMW, JSSmart rightMW); JSSmart rect (JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart TableRect(JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart AddClipRect(JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart RemoveClipRect(); JSSmart SetClip(JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart RemoveClip(); JSSmart drawMailMergeField(JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart drawSearchResult (JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart drawFlowAnchor (JSSmart x, JSSmart y); JSSmart SavePen(); JSSmart RestorePen(); JSSmart SaveBrush(); JSSmart RestoreBrush(); JSSmart SavePenBrush(); JSSmart RestorePenBrush(); JSSmart SaveGrState(); JSSmart RestoreGrState(); JSSmart StartClipPath(); JSSmart EndClipPath(); JSSmart StartCheckTableDraw(); JSSmart SetTextClipRect(JSSmart _l, JSSmart _t, JSSmart _r, JSSmart _b); JSSmart AddSmartRect (JSSmart x, JSSmart y, JSSmart w, JSSmart h, JSSmart pen_w); JSSmart CheckUseFonts2 (JSSmart _transform); JSSmart UncheckUseFonts2(); JSSmart Drawing_StartCheckBounds(JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart Drawing_EndCheckBounds(); JSSmart DrawPresentationComment(JSSmart type, JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart DrawPolygon(JSSmart oPath, JSSmart lineWidth, JSSmart shift); JSSmart DrawFootnoteRect(JSSmart x, JSSmart y, JSSmart w, JSSmart h); // new methods JSSmart toDataURL(JSSmart type); JSSmart GetPenColor(); JSSmart GetBrushColor(); JSSmart put_brushTexture(JSSmart src, JSSmart type); JSSmart put_brushTextureMode(JSSmart mode); JSSmart put_BrushTextureAlpha(JSSmart a); JSSmart put_BrushGradient(JSSmart colors, JSSmart n, JSSmart x0, JSSmart y0, JSSmart x1, JSSmart y1, JSSmart r0, JSSmart r1); JSSmart TransformPointX(JSSmart x, JSSmart y); JSSmart TransformPointY(JSSmart x, JSSmart y); JSSmart put_LineJoin(JSSmart join); JSSmart get_LineJoin(); JSSmart put_TextureBounds(JSSmart x, JSSmart y, JSSmart w, JSSmart h); JSSmart GetlineWidth(); JSSmart DrawPath(JSSmart path); JSSmart CoordTransformOffset(JSSmart tx, JSSmart ty); JSSmart GetTransform(); // layer JSSmart CreateLayer(JSSmart opacity); JSSmart BlendLayer(); DECLARE_EMBED_METHODS }; #endif // _BUILD_NATIVE_GRAPHICS_EMBED_H_