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

Side by Side Diff: include/views/SkWidget.h

Issue 1740383002: remove unneeded view subclasses (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 9 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 | « gyp/views.gyp ('k') | src/views/SkProgressView.cpp » ('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 /*
2 * Copyright 2006 The Android Open Source Project
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8 #ifndef SkWidget_DEFINED
9 #define SkWidget_DEFINED
10
11 #include "SkBitmap.h"
12 #include "SkDOM.h"
13 #include "SkPaint.h"
14 #include "SkString.h"
15 #include "SkTextBox.h"
16 #include "SkView.h"
17
18 class SkEvent;
19 class SkInterpolator;
20 class SkShader;
21
22 ////////////////////////////////////////////////////////////////////////////////
23
24 class SkWidget : public SkView {
25 public:
26 SkWidget(uint32_t flags = 0) : SkView(flags | kFocusable_Mask | kEnabled_Mas k) {}
27
28 /** Call this to post the widget's event to its listeners */
29 void postWidgetEvent();
30
31 static void Init();
32 static void Term();
33 protected:
34 // override to add slots to an event before posting
35 virtual void prepareWidgetEvent(SkEvent*);
36 virtual void onEnabledChange();
37
38 // <event ...> to initialize the event from XML
39 virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node);
40
41 private:
42 SkEvent fEvent;
43 typedef SkView INHERITED;
44 };
45
46 ////////////////////////////////////////////////////////////////////////////////
47
48 class SkHasLabelWidget : public SkWidget {
49 public:
50 SkHasLabelWidget(uint32_t flags = 0) : SkWidget(flags) {}
51
52 size_t getLabel(SkString* label = NULL) const;
53 size_t getLabel(char lable[] = NULL) const;
54 void setLabel(const SkString&);
55 void setLabel(const char label[]);
56 void setLabel(const char label[], size_t len);
57
58 protected:
59 // called when the label changes
60 virtual void onLabelChange();
61
62 // overrides
63 virtual void onInflate(const SkDOM& dom, const SkDOM::Node*);
64
65 private:
66 SkString fLabel;
67 typedef SkWidget INHERITED;
68 };
69
70 ////////////////////////////////////////////////////////////////////////////////
71
72 class SkButtonWidget : public SkHasLabelWidget {
73 public:
74 SkButtonWidget(uint32_t flags = 0) : SkHasLabelWidget(flags), fState(kOff_St ate) {}
75
76 enum State {
77 kOff_State, //!< XML: buttonState="off"
78 kOn_State, //!< XML: buttonState="on"
79 kUnknown_State //!< XML: buttonState="unknown"
80 };
81 State getButtonState() const { return fState; }
82 void setButtonState(State);
83
84 protected:
85 /** called when the label changes. default behavior is to inval the widget * /
86 virtual void onButtonStateChange();
87
88 // overrides
89 virtual void onInflate(const SkDOM& dom, const SkDOM::Node*);
90
91 private:
92 State fState;
93 typedef SkHasLabelWidget INHERITED;
94 };
95
96 ////////////////////////////////////////////////////////////////////////////////
97
98 class SkPushButtonWidget : public SkButtonWidget {
99 public:
100 SkPushButtonWidget(uint32_t flags = 0) : SkButtonWidget(flags) {}
101
102 protected:
103 bool onEvent(const SkEvent&) override;
104 void onDraw(SkCanvas*) override;
105 Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override;
106 bool onClick(Click* click) override;
107
108 private:
109 typedef SkButtonWidget INHERITED;
110 };
111
112 ////////////////////////////////////////////////////////////////////////////////
113
114 class SkCheckBoxWidget : public SkButtonWidget {
115 public:
116 SkCheckBoxWidget(uint32_t flags = 0);
117
118 protected:
119 virtual bool onEvent(const SkEvent&);
120 virtual void onDraw(SkCanvas*);
121 virtual void onInflate(const SkDOM& dom, const SkDOM::Node*);
122
123 private:
124 typedef SkButtonWidget INHERITED;
125 };
126
127 ////////////////////////////////////////////////////////////////////////////////
128
129 class SkStaticTextView : public SkView {
130 public:
131 SkStaticTextView(uint32_t flags = 0);
132 virtual ~SkStaticTextView();
133
134 enum Mode {
135 kFixedSize_Mode,
136 kAutoWidth_Mode,
137 kAutoHeight_Mode,
138
139 kModeCount
140 };
141 Mode getMode() const { return (Mode)fMode; }
142 void setMode(Mode);
143
144 SkTextBox::SpacingAlign getSpacingAlign() const { return (SkTextBox::Spacing Align)fSpacingAlign; }
145 void setSpacingAlign(SkTextBox::SpacingAlign);
146
147 void getMargin(SkPoint* margin) const;
148 void setMargin(SkScalar dx, SkScalar dy);
149
150 size_t getText(SkString* text = NULL) const;
151 size_t getText(char text[] = NULL) const;
152 void setText(const SkString&);
153 void setText(const char text[]);
154 void setText(const char text[], size_t len);
155
156 void getPaint(SkPaint*) const;
157 void setPaint(const SkPaint&);
158
159 protected:
160 // overrides
161 virtual void onDraw(SkCanvas*);
162 virtual void onInflate(const SkDOM& dom, const SkDOM::Node*);
163
164 private:
165 SkPoint fMargin;
166 SkString fText;
167 SkPaint fPaint;
168 uint8_t fMode;
169 uint8_t fSpacingAlign;
170
171 void computeSize();
172
173 typedef SkView INHERITED;
174 };
175
176 ////////////////////////////////////////////////////////////////////////////////
177
178 class SkBitmapView : public SkView {
179 public:
180 SkBitmapView(uint32_t flags = 0);
181 virtual ~SkBitmapView();
182
183 bool getBitmap(SkBitmap*) const;
184 void setBitmap(const SkBitmap*, bool viewOwnsPixels);
185 bool loadBitmapFromFile(const char path[]);
186
187 protected:
188 virtual void onDraw(SkCanvas*);
189 virtual void onInflate(const SkDOM&, const SkDOM::Node*);
190
191 private:
192 SkBitmap fBitmap;
193 typedef SkView INHERITED;
194 };
195
196 ////////////////////////////////////////////////////////////////////////////////
197
198 class SkHasLabelView : public SkView {
199 public:
200 void getLabel(SkString*) const;
201 void setLabel(const SkString&);
202 void setLabel(const char label[]);
203
204 protected:
205 SkString fLabel;
206
207 // called when the label changes
208 virtual void onLabelChange();
209
210 // overrides
211 virtual void onInflate(const SkDOM& dom, const SkDOM::Node*);
212 };
213
214 ////////////////////////////////////////////////////////////////////////////////
215
216 class SkPushButtonView : public SkHasLabelView {
217 public:
218 SkPushButtonView(uint32_t flags = 0);
219
220 protected:
221 virtual void onDraw(SkCanvas*);
222 virtual void onInflate(const SkDOM& dom, const SkDOM::Node*);
223 };
224
225 ////////////////////////////////////////////////////////////////////////////////
226
227 class SkCheckBoxView : public SkHasLabelView {
228 public:
229 SkCheckBoxView(uint32_t flags = 0);
230
231 enum State {
232 kOff_State,
233 kOn_State,
234 kMaybe_State
235 };
236 State getState() const { return fState; }
237 void setState(State);
238
239 protected:
240 virtual void onDraw(SkCanvas*);
241 virtual void onInflate(const SkDOM& dom, const SkDOM::Node*);
242
243 private:
244 State fState;
245 };
246
247 ////////////////////////////////////////////////////////////////////////////////
248
249 class SkProgressView : public SkView {
250 public:
251 SkProgressView(uint32_t flags = 0);
252 virtual ~SkProgressView();
253
254 uint16_t getValue() const { return fValue; }
255 uint16_t getMax() const { return fMax; }
256
257 void setMax(U16CPU max);
258 void setValue(U16CPU value);
259
260 protected:
261 virtual void onDraw(SkCanvas*);
262 virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node);
263
264 private:
265 uint16_t fValue, fMax;
266 SkShader* fOnShader, *fOffShader;
267 SkInterpolator* fInterp;
268 bool fDoInterp;
269
270 typedef SkView INHERITED;
271 };
272
273 ////////////////////////////////////////////////////////////////////////////////
274
275 class SkListSource : public SkEventSink {
276 public:
277 virtual int countRows() = 0;
278 virtual void getRow(int index, SkString* left, SkString* right) = 0;
279 virtual SkEvent* getEvent(int index);
280
281 static SkListSource* CreateFromDir(const char path[], const char suffix[],
282 const char targetPrefix[]);
283 static SkListSource* CreateFromDOM(const SkDOM& dom, const SkDOM::Node* node );
284 };
285
286 ////////////////////////////////////////////////////////////////////////////////
287
288 class SkListView : public SkView {
289 public:
290 SkListView(uint32_t flags = 0);
291 virtual ~SkListView();
292
293 SkScalar getRowHeight() const { return fRowHeight; }
294 void setRowHeight(SkScalar);
295
296 /** Return the index of the selected row, or -1 if none
297 */
298 int getSelection() const { return fCurrIndex; }
299 /** Set the index of the selected row, or -1 for none
300 */
301 void setSelection(int);
302
303 void moveSelectionUp();
304 void moveSelectionDown();
305
306 enum Attr {
307 kBG_Attr,
308 kNormalText_Attr,
309 kHiliteText_Attr,
310 kHiliteCell_Attr,
311 kAttrCount
312 };
313 SkPaint& paint(Attr);
314
315 SkListSource* getListSource() const { return fSource; }
316 SkListSource* setListSource(SkListSource*);
317
318 #if 0
319 enum Action {
320 kSelectionChange_Action,
321 kSelectionPicked_Action,
322 kActionCount
323 };
324 /** If event is not null, it is retained by the view, and a copy
325 of the event will be posted to its listeners when the specified
326 action occurs. If event is null, then no event will be posted for
327 the specified action.
328 */
329 void setActionEvent(Action, SkEvent* event);
330 #endif
331
332 protected:
333 virtual void onDraw(SkCanvas*);
334 virtual void onSizeChange();
335 virtual bool onEvent(const SkEvent&);
336 virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node);
337
338 private:
339 SkPaint fPaint[kAttrCount];
340 SkListSource* fSource;
341 SkScalar fRowHeight;
342 int fCurrIndex; // logical index
343 int fScrollIndex; // logical index of top-most visible row
344 int fVisibleRowCount;
345 SkString* fStrCache;
346
347 void dirtyStrCache();
348 void ensureStrCache(int visibleCount);
349
350 int logicalToVisualIndex(int index) const { return index - fScrollIndex; }
351 void invalSelection();
352 bool getRowRect(int index, SkRect*) const;
353 void ensureSelectionIsVisible();
354
355 typedef SkView INHERITED;
356 };
357
358 ////////////////////////////////////////////////////////////////////////////////
359
360 class SkGridView : public SkView {
361 public:
362 SkGridView(uint32_t flags = 0);
363 virtual ~SkGridView();
364
365 void getCellSize(SkPoint*) const;
366 void setCellSize(SkScalar x, SkScalar y);
367
368 /** Return the index of the selected item, or -1 if none
369 */
370 int getSelection() const { return fCurrIndex; }
371 /** Set the index of the selected row, or -1 for none
372 */
373 void setSelection(int);
374
375 void moveSelectionUp();
376 void moveSelectionDown();
377
378 enum Attr {
379 kBG_Attr,
380 kHiliteCell_Attr,
381 kAttrCount
382 };
383 SkPaint& paint(Attr);
384
385 SkListSource* getListSource() const { return fSource; }
386 SkListSource* setListSource(SkListSource*);
387
388 protected:
389 virtual void onDraw(SkCanvas*);
390 virtual void onSizeChange();
391 virtual bool onEvent(const SkEvent&);
392 virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node);
393
394 private:
395 SkView* fScrollBar;
396 SkPaint fPaint[kAttrCount];
397 SkListSource* fSource;
398 int fCurrIndex; // logical index
399
400 SkPoint fCellSize;
401 SkIPoint fVisibleCount;
402
403 int logicalToVisualIndex(int index) const { return index; }
404 void invalSelection();
405 bool getCellRect(int index, SkRect*) const;
406 void ensureSelectionIsVisible();
407
408 typedef SkView INHERITED;
409 };
410
411 #endif
OLDNEW
« no previous file with comments | « gyp/views.gyp ('k') | src/views/SkProgressView.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698