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

Side by Side Diff: core/src/fxge/agg/agg23/agg_renderer_base.h

Issue 402463002: Replace agg with skia (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Fix clang compile error Created 6 years, 5 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
OLDNEW
(Empty)
1
2 //----------------------------------------------------------------------------
3 // Anti-Grain Geometry - Version 2.3
4 // Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
5 //
6 // Permission to copy, use, modify, sell and distribute this software
7 // is granted provided this copyright notice appears in all copies.
8 // This software is provided "as is" without express or implied
9 // warranty, and with no claim as to its suitability for any purpose.
10 //
11 //----------------------------------------------------------------------------
12 // Contact: mcseem@antigrain.com
13 // mcseemagg@yahoo.com
14 // http://www.antigrain.com
15 //----------------------------------------------------------------------------
16 //
17 // class renderer_base
18 //
19 //----------------------------------------------------------------------------
20 #ifndef AGG_RENDERER_BASE_INCLUDED
21 #define AGG_RENDERER_BASE_INCLUDED
22 #include "agg_basics.h"
23 #include "agg_rendering_buffer.h"
24 namespace agg
25 {
26 template<class PixelFormat> class renderer_base : public CFX_Object
27 {
28 public:
29 typedef PixelFormat pixfmt_type;
30 typedef typename pixfmt_type::color_type color_type;
31 typedef typename pixfmt_type::row_data row_data;
32 typedef typename pixfmt_type::span_data span_data;
33 renderer_base() : m_ren(0), m_clip_box(1, 1, 0, 0) {}
34 renderer_base(pixfmt_type& ren) :
35 m_ren(&ren),
36 m_clip_box(0, 0, ren.width() - 1, ren.height() - 1)
37 {}
38 void attach(pixfmt_type& ren)
39 {
40 m_ren = &ren;
41 m_clip_box = rect(0, 0, ren.width() - 1, ren.height() - 1);
42 }
43 const pixfmt_type& ren() const
44 {
45 return *m_ren;
46 }
47 pixfmt_type& ren()
48 {
49 return *m_ren;
50 }
51 unsigned width() const
52 {
53 return m_ren->width();
54 }
55 unsigned height() const
56 {
57 return m_ren->height();
58 }
59 void first_clip_box() {}
60 bool next_clip_box()
61 {
62 return false;
63 }
64 const rect& clip_box() const
65 {
66 return m_clip_box;
67 }
68 int xmin() const
69 {
70 return m_clip_box.x1;
71 }
72 int ymin() const
73 {
74 return m_clip_box.y1;
75 }
76 int xmax() const
77 {
78 return m_clip_box.x2;
79 }
80 int ymax() const
81 {
82 return m_clip_box.y2;
83 }
84 const rect& bounding_clip_box() const
85 {
86 return m_clip_box;
87 }
88 int bounding_xmin() const
89 {
90 return m_clip_box.x1;
91 }
92 int bounding_ymin() const
93 {
94 return m_clip_box.y1;
95 }
96 int bounding_xmax() const
97 {
98 return m_clip_box.x2;
99 }
100 int bounding_ymax() const
101 {
102 return m_clip_box.y2;
103 }
104 void blend_hline(int x1, int y, int x2,
105 const color_type& c, cover_type cover)
106 {
107 if(x1 > x2) {
108 int t = x2;
109 x2 = x1;
110 x1 = t;
111 }
112 if(y > ymax()) {
113 return;
114 }
115 if(y < ymin()) {
116 return;
117 }
118 if(x1 > xmax()) {
119 return;
120 }
121 if(x2 < xmin()) {
122 return;
123 }
124 if(x1 < xmin()) {
125 x1 = xmin();
126 }
127 if(x2 > xmax()) {
128 x2 = xmax();
129 }
130 m_ren->blend_hline(x1, y, x2 - x1 + 1, c, cover);
131 }
132 void blend_solid_hspan(int x, int y, int len,
133 const color_type& c,
134 const cover_type* covers)
135 {
136 if(y > ymax()) {
137 return;
138 }
139 if(y < ymin()) {
140 return;
141 }
142 if(x < xmin()) {
143 len -= xmin() - x;
144 if(len <= 0) {
145 return;
146 }
147 covers += xmin() - x;
148 x = xmin();
149 }
150 if(x + len > xmax()) {
151 len = xmax() - x + 1;
152 if(len <= 0) {
153 return;
154 }
155 }
156 m_ren->blend_solid_hspan(x, y, len, c, covers);
157 }
158 private:
159 pixfmt_type* m_ren;
160 rect m_clip_box;
161 };
162 }
163 #endif
OLDNEW
« no previous file with comments | « core/src/fxge/agg/agg23/agg_render_scanlines.h ('k') | core/src/fxge/agg/agg23/agg_renderer_scanline.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698