Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Side by Side Diff: core/include/fxge/fx_ge.h

Issue 1868533002: Move core/include/fxge to core/fxge/include. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/include/fxge/fx_freetype.h ('k') | core/include/fxge/fx_ge_apple.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef CORE_INCLUDE_FXGE_FX_GE_H_
8 #define CORE_INCLUDE_FXGE_FX_GE_H_
9
10 #include "core/include/fxge/fx_dib.h"
11 #include "core/include/fxge/fx_font.h"
12
13 class CFX_Font;
14 class CFX_FontMgr;
15 class CFX_FontCache;
16 class CFX_FaceCache;
17 class CPDF_ShadingPattern;
18 class IFX_RenderDeviceDriver;
19 class CCodec_ModuleMgr;
20 class SkPictureRecorder;
21
22 class CFX_GEModule {
23 public:
24 static void Create(const char** pUserFontPaths);
25
26 static void Use(CFX_GEModule* pMgr);
27
28 static CFX_GEModule* Get();
29
30 static void Destroy();
31
32 public:
33 CFX_FontCache* GetFontCache();
34 CFX_FontMgr* GetFontMgr() { return m_pFontMgr; }
35 void SetTextGamma(FX_FLOAT gammaValue);
36 const uint8_t* GetTextGammaTable();
37
38 void SetCodecModule(CCodec_ModuleMgr* pCodecModule) {
39 m_pCodecModule = pCodecModule;
40 }
41 CCodec_ModuleMgr* GetCodecModule() { return m_pCodecModule; }
42 FXFT_Library m_FTLibrary;
43 void* GetPlatformData() { return m_pPlatformData; }
44
45 protected:
46 explicit CFX_GEModule(const char** pUserFontPaths);
47
48 ~CFX_GEModule();
49 void InitPlatform();
50 void DestroyPlatform();
51
52 private:
53 uint8_t m_GammaValue[256];
54 CFX_FontCache* m_pFontCache;
55 CFX_FontMgr* m_pFontMgr;
56 CCodec_ModuleMgr* m_pCodecModule;
57 void* m_pPlatformData;
58 const char** m_pUserFontPaths;
59 };
60 typedef struct {
61 FX_FLOAT m_PointX;
62
63 FX_FLOAT m_PointY;
64
65 int m_Flag;
66 } FX_PATHPOINT;
67 #define FXPT_CLOSEFIGURE 0x01
68 #define FXPT_LINETO 0x02
69 #define FXPT_BEZIERTO 0x04
70 #define FXPT_MOVETO 0x06
71 #define FXPT_TYPE 0x06
72 #define FXFILL_ALTERNATE 1
73 #define FXFILL_WINDING 2
74 class CFX_ClipRgn {
75 public:
76 CFX_ClipRgn(int device_width, int device_height);
77
78 CFX_ClipRgn(const FX_RECT& rect);
79
80 CFX_ClipRgn(const CFX_ClipRgn& src);
81
82 ~CFX_ClipRgn();
83
84 typedef enum { RectI, MaskF } ClipType;
85
86 void Reset(const FX_RECT& rect);
87
88 ClipType GetType() const { return m_Type; }
89
90 const FX_RECT& GetBox() const { return m_Box; }
91
92 CFX_DIBitmapRef GetMask() const { return m_Mask; }
93
94 void IntersectRect(const FX_RECT& rect);
95
96 void IntersectMaskF(int left, int top, CFX_DIBitmapRef Mask);
97
98 protected:
99 ClipType m_Type;
100
101 FX_RECT m_Box;
102
103 CFX_DIBitmapRef m_Mask;
104
105 void IntersectMaskRect(FX_RECT rect, FX_RECT mask_box, CFX_DIBitmapRef Mask);
106 };
107 #define FX_GAMMA(value) (value)
108 #define FX_GAMMA_INVERSE(value) (value)
109 inline FX_ARGB ArgbGamma(FX_ARGB argb) {
110 return argb;
111 }
112 inline FX_ARGB ArgbGammaInverse(FX_ARGB argb) {
113 return argb;
114 }
115 class CFX_PathData {
116 public:
117 CFX_PathData();
118
119 CFX_PathData(const CFX_PathData& src);
120
121 ~CFX_PathData();
122
123 int GetPointCount() const { return m_PointCount; }
124
125 int GetFlag(int index) const { return m_pPoints[index].m_Flag; }
126
127 FX_FLOAT GetPointX(int index) const { return m_pPoints[index].m_PointX; }
128
129 FX_FLOAT GetPointY(int index) const { return m_pPoints[index].m_PointY; }
130
131 FX_PATHPOINT* GetPoints() const { return m_pPoints; }
132
133 void SetPointCount(int nPoints);
134 void AllocPointCount(int nPoints);
135 void AddPointCount(int addPoints);
136
137 CFX_FloatRect GetBoundingBox() const;
138
139 CFX_FloatRect GetBoundingBox(FX_FLOAT line_width, FX_FLOAT miter_limit) const;
140
141 void Transform(const CFX_Matrix* pMatrix);
142
143 FX_BOOL IsRect() const;
144
145 FX_BOOL GetZeroAreaPath(CFX_PathData& NewPath,
146 CFX_Matrix* pMatrix,
147 FX_BOOL& bThin,
148 FX_BOOL bAdjust) const;
149
150 FX_BOOL IsRect(const CFX_Matrix* pMatrix, CFX_FloatRect* rect) const;
151
152 void Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix);
153 void AppendRect(FX_FLOAT left, FX_FLOAT bottom, FX_FLOAT right, FX_FLOAT top);
154
155 void SetPoint(int index, FX_FLOAT x, FX_FLOAT y, int flag);
156
157 void TrimPoints(int nPoints);
158
159 void Copy(const CFX_PathData& src);
160
161 protected:
162 friend class CPDF_Path;
163
164 int m_PointCount;
165
166 FX_PATHPOINT* m_pPoints;
167
168 int m_AllocCount;
169 };
170 class CFX_GraphStateData {
171 public:
172 CFX_GraphStateData();
173
174 CFX_GraphStateData(const CFX_GraphStateData& src);
175
176 ~CFX_GraphStateData();
177
178 void Copy(const CFX_GraphStateData& src);
179
180 void SetDashCount(int count);
181
182 typedef enum { LineCapButt = 0, LineCapRound = 1, LineCapSquare = 2 } LineCap;
183 LineCap m_LineCap;
184 int m_DashCount;
185 FX_FLOAT* m_DashArray;
186 FX_FLOAT m_DashPhase;
187
188 typedef enum {
189 LineJoinMiter = 0,
190 LineJoinRound = 1,
191 LineJoinBevel = 2,
192 } LineJoin;
193 LineJoin m_LineJoin;
194 FX_FLOAT m_MiterLimit;
195 FX_FLOAT m_LineWidth;
196 };
197 #define FXDC_DEVICE_CLASS 1
198 #define FXDC_PIXEL_WIDTH 2
199 #define FXDC_PIXEL_HEIGHT 3
200 #define FXDC_BITS_PIXEL 4
201 #define FXDC_HORZ_SIZE 5
202 #define FXDC_VERT_SIZE 6
203 #define FXDC_RENDER_CAPS 7
204 #define FXDC_DITHER_BITS 8
205 #define FXDC_DISPLAY 1
206 #define FXDC_PRINTER 2
207 #define FXRC_GET_BITS 0x01
208 #define FXRC_BIT_MASK 0x02
209 #define FXRC_ALPHA_MASK 0x04
210 #define FXRC_ALPHA_PATH 0x10
211 #define FXRC_ALPHA_IMAGE 0x20
212 #define FXRC_ALPHA_OUTPUT 0x40
213 #define FXRC_BLEND_MODE 0x80
214 #define FXRC_SOFT_CLIP 0x100
215 #define FXRC_CMYK_OUTPUT 0x200
216 #define FXRC_BITMASK_OUTPUT 0x400
217 #define FXRC_BYTEMASK_OUTPUT 0x800
218 #define FXRENDER_IMAGE_LOSSY 0x1000
219 #define FXRC_FILLSTROKE_PATH 0x2000
220 #define FXRC_SHADING 0x4000
221 #define FXFILL_ALTERNATE 1
222 #define FXFILL_WINDING 2
223 #define FXFILL_FULLCOVER 4
224 #define FXFILL_RECT_AA 8
225 #define FX_FILL_STROKE 16
226 #define FX_STROKE_ADJUST 32
227 #define FX_STROKE_TEXT_MODE 64
228 #define FX_FILL_TEXT_MODE 128
229 #define FX_ZEROAREA_FILL 256
230 #define FXFILL_NOPATHSMOOTH 512
231 #define FXTEXT_CLEARTYPE 0x01
232 #define FXTEXT_BGR_STRIPE 0x02
233 #define FXTEXT_PRINTGRAPHICTEXT 0x04
234 #define FXTEXT_NO_NATIVETEXT 0x08
235 #define FXTEXT_PRINTIMAGETEXT 0x10
236 #define FXTEXT_NOSMOOTH 0x20
237 typedef struct {
238 uint32_t m_GlyphIndex;
239 FX_FLOAT m_OriginX, m_OriginY;
240 int m_FontCharWidth;
241 FX_BOOL m_bGlyphAdjust;
242 FX_FLOAT m_AdjustMatrix[4];
243 uint32_t m_ExtGID;
244 FX_BOOL m_bFontStyle;
245 } FXTEXT_CHARPOS;
246
247 class CFX_RenderDevice {
248 public:
249 CFX_RenderDevice();
250 virtual ~CFX_RenderDevice();
251
252 void SetDeviceDriver(IFX_RenderDeviceDriver* pDriver);
253 IFX_RenderDeviceDriver* GetDeviceDriver() const { return m_pDeviceDriver; }
254
255 FX_BOOL StartRendering();
256 void EndRendering();
257 void SaveState();
258 void RestoreState(FX_BOOL bKeepSaved = FALSE);
259
260 int GetWidth() const { return m_Width; }
261 int GetHeight() const { return m_Height; }
262 int GetDeviceClass() const { return m_DeviceClass; }
263 int GetBPP() const { return m_bpp; }
264 int GetRenderCaps() const { return m_RenderCaps; }
265 int GetDeviceCaps(int id) const;
266 CFX_Matrix GetCTM() const;
267
268 CFX_DIBitmap* GetBitmap() const { return m_pBitmap; }
269 void SetBitmap(CFX_DIBitmap* pBitmap) { m_pBitmap = pBitmap; }
270
271 FX_BOOL CreateCompatibleBitmap(CFX_DIBitmap* pDIB,
272 int width,
273 int height) const;
274
275 const FX_RECT& GetClipBox() const { return m_ClipBox; }
276
277 FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData,
278 const CFX_Matrix* pObject2Device,
279 int fill_mode);
280
281 FX_BOOL SetClip_Rect(const FX_RECT& pRect);
282 FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData,
283 const CFX_Matrix* pObject2Device,
284 const CFX_GraphStateData* pGraphState);
285
286 FX_BOOL DrawPath(const CFX_PathData* pPathData,
287 const CFX_Matrix* pObject2Device,
288 const CFX_GraphStateData* pGraphState,
289 uint32_t fill_color,
290 uint32_t stroke_color,
291 int fill_mode,
292 int alpha_flag = 0,
293 void* pIccTransform = NULL,
294 int blend_type = FXDIB_BLEND_NORMAL);
295
296 FX_BOOL SetPixel(int x,
297 int y,
298 uint32_t color,
299 int alpha_flag = 0,
300 void* pIccTransform = NULL);
301
302 FX_BOOL FillRect(const FX_RECT* pRect,
303 uint32_t color,
304 int alpha_flag = 0,
305 void* pIccTransform = NULL,
306 int blend_type = FXDIB_BLEND_NORMAL);
307
308 FX_BOOL DrawCosmeticLine(FX_FLOAT x1,
309 FX_FLOAT y1,
310 FX_FLOAT x2,
311 FX_FLOAT y2,
312 uint32_t color,
313 int fill_mode = 0,
314 int alpha_flag = 0,
315 void* pIccTransform = NULL,
316 int blend_type = FXDIB_BLEND_NORMAL);
317
318 FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap,
319 int left,
320 int top,
321 void* pIccTransform = NULL);
322
323 CFX_DIBitmap* GetBackDrop();
324
325 FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
326 int left,
327 int top,
328 int blend_type = FXDIB_BLEND_NORMAL,
329 void* pIccTransform = NULL);
330
331 FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
332 int left,
333 int top,
334 int dest_width,
335 int dest_height,
336 uint32_t flags = 0,
337 void* pIccTransform = NULL,
338 int blend_type = FXDIB_BLEND_NORMAL);
339
340 FX_BOOL SetBitMask(const CFX_DIBSource* pBitmap,
341 int left,
342 int top,
343 uint32_t color,
344 int alpha_flag = 0,
345 void* pIccTransform = NULL);
346
347 FX_BOOL StretchBitMask(const CFX_DIBSource* pBitmap,
348 int left,
349 int top,
350 int dest_width,
351 int dest_height,
352 uint32_t color,
353 uint32_t flags = 0,
354 int alpha_flag = 0,
355 void* pIccTransform = NULL);
356
357 FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap,
358 int bitmap_alpha,
359 uint32_t color,
360 const CFX_Matrix* pMatrix,
361 uint32_t flags,
362 void*& handle,
363 int alpha_flag = 0,
364 void* pIccTransform = NULL,
365 int blend_type = FXDIB_BLEND_NORMAL);
366
367 FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause);
368
369 void CancelDIBits(void* handle);
370
371 FX_BOOL DrawNormalText(int nChars,
372 const FXTEXT_CHARPOS* pCharPos,
373 CFX_Font* pFont,
374 CFX_FontCache* pCache,
375 FX_FLOAT font_size,
376 const CFX_Matrix* pText2Device,
377 uint32_t fill_color,
378 uint32_t text_flags,
379 int alpha_flag = 0,
380 void* pIccTransform = NULL);
381
382 FX_BOOL DrawTextPath(int nChars,
383 const FXTEXT_CHARPOS* pCharPos,
384 CFX_Font* pFont,
385 CFX_FontCache* pCache,
386 FX_FLOAT font_size,
387 const CFX_Matrix* pText2User,
388 const CFX_Matrix* pUser2Device,
389 const CFX_GraphStateData* pGraphState,
390 uint32_t fill_color,
391 uint32_t stroke_color,
392 CFX_PathData* pClippingPath,
393 int nFlag = 0,
394 int alpha_flag = 0,
395 void* pIccTransform = NULL,
396 int blend_type = FXDIB_BLEND_NORMAL);
397 virtual void Begin() {}
398 virtual void End() {}
399
400 private:
401 void InitDeviceInfo();
402 void UpdateClipBox();
403 FX_BOOL DrawFillStrokePath(const CFX_PathData* pPathData,
404 const CFX_Matrix* pObject2Device,
405 const CFX_GraphStateData* pGraphState,
406 uint32_t fill_color,
407 uint32_t stroke_color,
408 int fill_mode,
409 int alpha_flag,
410 void* pIccTransform,
411 int blend_type);
412
413 CFX_DIBitmap* m_pBitmap;
414 int m_Width;
415 int m_Height;
416 int m_bpp;
417 int m_RenderCaps;
418 int m_DeviceClass;
419 FX_RECT m_ClipBox;
420 IFX_RenderDeviceDriver* m_pDeviceDriver;
421 };
422
423 class CFX_FxgeDevice : public CFX_RenderDevice {
424 public:
425 CFX_FxgeDevice();
426 ~CFX_FxgeDevice() override;
427
428 bool Attach(CFX_DIBitmap* pBitmap,
429 int dither_bits = 0,
430 bool bRgbByteOrder = false,
431 CFX_DIBitmap* pOriDevice = NULL,
432 bool bGroupKnockout = false);
433
434 bool Create(int width,
435 int height,
436 FXDIB_Format format,
437 int dither_bits = 0,
438 CFX_DIBitmap* pOriDevice = NULL);
439
440 protected:
441 bool m_bOwnedBitmap;
442 };
443
444 class CFX_SkiaDevice : public CFX_RenderDevice {
445 public:
446 CFX_SkiaDevice();
447 ~CFX_SkiaDevice() override;
448
449 FX_BOOL Attach(CFX_DIBitmap* pBitmap,
450 int dither_bits = 0,
451 FX_BOOL bRgbByteOrder = FALSE,
452 CFX_DIBitmap* pOriDevice = NULL,
453 FX_BOOL bGroupKnockout = FALSE);
454
455 FX_BOOL AttachRecorder(SkPictureRecorder* recorder);
456
457 FX_BOOL Create(int width,
458 int height,
459 FXDIB_Format format,
460 int dither_bits = 0,
461 CFX_DIBitmap* pOriDevice = NULL);
462
463 SkPictureRecorder* CreateRecorder(int size_x, int size_y);
464
465 protected:
466 FX_BOOL m_bOwnedBitmap;
467 };
468
469 class IFX_RenderDeviceDriver {
470 public:
471 static IFX_RenderDeviceDriver* CreateFxgeDriver(
472 CFX_DIBitmap* pBitmap,
473 FX_BOOL bRgbByteOrder = FALSE,
474 CFX_DIBitmap* pOriDevice = NULL,
475 FX_BOOL bGroupKnockout = FALSE);
476
477 virtual ~IFX_RenderDeviceDriver() {}
478 virtual void Begin() {}
479 virtual void End() {}
480
481 virtual int GetDeviceCaps(int caps_id) = 0;
482
483 virtual CFX_Matrix GetCTM() const { return CFX_Matrix(); }
484
485 virtual FX_BOOL IsPSPrintDriver() { return FALSE; }
486
487 virtual FX_BOOL StartRendering() { return TRUE; }
488
489 virtual void EndRendering() {}
490
491 virtual void SaveState() = 0;
492
493 virtual void RestoreState(FX_BOOL bKeepSaved = FALSE) = 0;
494
495 virtual FX_BOOL SetClip_PathFill(const CFX_PathData* pPathData,
496 const CFX_Matrix* pObject2Device,
497 int fill_mode) = 0;
498
499 virtual FX_BOOL SetClip_PathStroke(const CFX_PathData* pPathData,
500 const CFX_Matrix* pObject2Device,
501 const CFX_GraphStateData* pGraphState) {
502 return FALSE;
503 }
504
505 virtual FX_BOOL DrawPath(const CFX_PathData* pPathData,
506 const CFX_Matrix* pObject2Device,
507 const CFX_GraphStateData* pGraphState,
508 uint32_t fill_color,
509 uint32_t stroke_color,
510 int fill_mode,
511 int alpha_flag = 0,
512 void* pIccTransform = NULL,
513 int blend_type = FXDIB_BLEND_NORMAL) = 0;
514
515 virtual FX_BOOL SetPixel(int x,
516 int y,
517 uint32_t color,
518 int alpha_flag = 0,
519 void* pIccTransform = NULL) {
520 return FALSE;
521 }
522
523 virtual FX_BOOL FillRect(const FX_RECT* pRect,
524 uint32_t fill_color,
525 int alpha_flag = 0,
526 void* pIccTransform = NULL,
527 int blend_type = FXDIB_BLEND_NORMAL) {
528 return FALSE;
529 }
530
531 virtual FX_BOOL DrawCosmeticLine(FX_FLOAT x1,
532 FX_FLOAT y1,
533 FX_FLOAT x2,
534 FX_FLOAT y2,
535 uint32_t color,
536 int alpha_flag = 0,
537 void* pIccTransform = NULL,
538 int blend_type = FXDIB_BLEND_NORMAL) {
539 return FALSE;
540 }
541
542 virtual FX_BOOL GetClipBox(FX_RECT* pRect) = 0;
543
544 virtual FX_BOOL GetDIBits(CFX_DIBitmap* pBitmap,
545 int left,
546 int top,
547 void* pIccTransform = NULL,
548 FX_BOOL bDEdge = FALSE) {
549 return FALSE;
550 }
551 virtual CFX_DIBitmap* GetBackDrop() { return NULL; }
552
553 virtual FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
554 uint32_t color,
555 const FX_RECT* pSrcRect,
556 int dest_left,
557 int dest_top,
558 int blend_type,
559 int alpha_flag = 0,
560 void* pIccTransform = NULL) = 0;
561
562 virtual FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
563 uint32_t color,
564 int dest_left,
565 int dest_top,
566 int dest_width,
567 int dest_height,
568 const FX_RECT* pClipRect,
569 uint32_t flags,
570 int alpha_flag = 0,
571 void* pIccTransform = NULL,
572 int blend_type = FXDIB_BLEND_NORMAL) = 0;
573
574 virtual FX_BOOL StartDIBits(const CFX_DIBSource* pBitmap,
575 int bitmap_alpha,
576 uint32_t color,
577 const CFX_Matrix* pMatrix,
578 uint32_t flags,
579 void*& handle,
580 int alpha_flag = 0,
581 void* pIccTransform = NULL,
582 int blend_type = FXDIB_BLEND_NORMAL) = 0;
583
584 virtual FX_BOOL ContinueDIBits(void* handle, IFX_Pause* pPause) {
585 return FALSE;
586 }
587
588 virtual void CancelDIBits(void* handle) {}
589
590 virtual FX_BOOL DrawDeviceText(int nChars,
591 const FXTEXT_CHARPOS* pCharPos,
592 CFX_Font* pFont,
593 CFX_FontCache* pCache,
594 const CFX_Matrix* pObject2Device,
595 FX_FLOAT font_size,
596 uint32_t color,
597 int alpha_flag = 0,
598 void* pIccTransform = NULL) {
599 return FALSE;
600 }
601
602 virtual void* GetPlatformSurface() const { return NULL; }
603 virtual int GetDriverType() const { return 0; }
604 virtual void ClearDriver() {}
605
606 virtual FX_BOOL DrawShading(CPDF_ShadingPattern* pPattern,
607 CFX_Matrix* pMatrix,
608 int alpha,
609 FX_BOOL bAlphaMode) {
610 return false;
611 }
612 };
613
614 class IFX_PSOutput {
615 public:
616 virtual void Release() = 0;
617 virtual void OutputPS(const FX_CHAR* str, int len) = 0;
618
619 protected:
620 virtual ~IFX_PSOutput() {}
621 };
622
623 class CPSFont;
624 class CFX_PSRenderer {
625 public:
626 CFX_PSRenderer();
627
628 ~CFX_PSRenderer();
629
630 void Init(IFX_PSOutput* pOutput,
631 int ps_level,
632 int width,
633 int height,
634 FX_BOOL bCmykOutput);
635 FX_BOOL StartRendering();
636 void EndRendering();
637
638 void SaveState();
639
640 void RestoreState(FX_BOOL bKeepSaved = FALSE);
641
642 void SetClip_PathFill(const CFX_PathData* pPathData,
643 const CFX_Matrix* pObject2Device,
644 int fill_mode);
645
646 void SetClip_PathStroke(const CFX_PathData* pPathData,
647 const CFX_Matrix* pObject2Device,
648 const CFX_GraphStateData* pGraphState);
649
650 FX_RECT GetClipBox() { return m_ClipBox; }
651
652 FX_BOOL DrawPath(const CFX_PathData* pPathData,
653 const CFX_Matrix* pObject2Device,
654 const CFX_GraphStateData* pGraphState,
655 uint32_t fill_color,
656 uint32_t stroke_color,
657 int fill_mode,
658 int alpha_flag = 0,
659 void* pIccTransform = NULL);
660
661 FX_BOOL SetDIBits(const CFX_DIBSource* pBitmap,
662 uint32_t color,
663 int dest_left,
664 int dest_top,
665 int alpha_flag = 0,
666 void* pIccTransform = NULL);
667
668 FX_BOOL StretchDIBits(const CFX_DIBSource* pBitmap,
669 uint32_t color,
670 int dest_left,
671 int dest_top,
672 int dest_width,
673 int dest_height,
674 uint32_t flags,
675 int alpha_flag = 0,
676 void* pIccTransform = NULL);
677
678 FX_BOOL DrawDIBits(const CFX_DIBSource* pBitmap,
679 uint32_t color,
680 const CFX_Matrix* pMatrix,
681 uint32_t flags,
682 int alpha_flag = 0,
683 void* pIccTransform = NULL);
684
685 FX_BOOL DrawText(int nChars,
686 const FXTEXT_CHARPOS* pCharPos,
687 CFX_Font* pFont,
688 CFX_FontCache* pCache,
689 const CFX_Matrix* pObject2Device,
690 FX_FLOAT font_size,
691 uint32_t color,
692 int alpha_flag = 0,
693 void* pIccTransform = NULL);
694
695 private:
696 IFX_PSOutput* m_pOutput;
697
698 int m_PSLevel;
699
700 CFX_GraphStateData m_CurGraphState;
701
702 FX_BOOL m_bGraphStateSet;
703
704 FX_BOOL m_bCmykOutput;
705
706 FX_BOOL m_bColorSet;
707
708 uint32_t m_LastColor;
709
710 FX_RECT m_ClipBox;
711
712 CFX_ArrayTemplate<CPSFont*> m_PSFontList;
713
714 CFX_ArrayTemplate<FX_RECT> m_ClipBoxStack;
715 FX_BOOL m_bInited;
716
717 void OutputPath(const CFX_PathData* pPathData,
718 const CFX_Matrix* pObject2Device);
719
720 void SetGraphState(const CFX_GraphStateData* pGraphState);
721
722 void SetColor(uint32_t color, int alpha_flag, void* pIccTransform);
723
724 void FindPSFontGlyph(CFX_FaceCache* pFaceCache,
725 CFX_Font* pFont,
726 const FXTEXT_CHARPOS& charpos,
727 int& ps_fontnum,
728 int& ps_glyphindex);
729
730 void WritePSBinary(const uint8_t* data, int len);
731 };
732
733 #endif // CORE_INCLUDE_FXGE_FX_GE_H_
OLDNEW
« no previous file with comments | « core/include/fxge/fx_freetype.h ('k') | core/include/fxge/fx_ge_apple.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698