diff options
Diffstat (limited to 'skia/include/SkWidget.h')
-rw-r--r-- | skia/include/SkWidget.h | 476 |
1 files changed, 0 insertions, 476 deletions
diff --git a/skia/include/SkWidget.h b/skia/include/SkWidget.h deleted file mode 100644 index db85f01..0000000 --- a/skia/include/SkWidget.h +++ /dev/null @@ -1,476 +0,0 @@ -/* - * Copyright (C) 2006 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef SkWidget_DEFINED -#define SkWidget_DEFINED - -#include "SkView.h" -#include "SkBitmap.h" -#include "SkDOM.h" -#include "SkPaint.h" -#include "SkString.h" -#include "SkTDArray.h" - -////////////////////////////////////////////////////////////////////////////// - -class SkWidget : public SkView { -public: - SkWidget(uint32_t flags = 0) : SkView(flags | kFocusable_Mask | kEnabled_Mask) {} - - /** Call this to post the widget's event to its listeners */ - void postWidgetEvent(); - - static void Init(); - static void Term(); -protected: - // override to add slots to an event before posting - virtual void prepareWidgetEvent(SkEvent*); - virtual void onEnabledChange(); - - // <event ...> to initialize the event from XML - virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node); - -private: - SkEvent fEvent; - typedef SkView INHERITED; -}; - -class SkHasLabelWidget : public SkWidget { -public: - SkHasLabelWidget(uint32_t flags = 0) : SkWidget(flags) {} - - size_t getLabel(SkString* label = NULL) const; - size_t getLabel(char lable[] = NULL) const; - void setLabel(const SkString&); - void setLabel(const char label[]); - void setLabel(const char label[], size_t len); - -protected: - // called when the label changes - virtual void onLabelChange(); - - // overrides - virtual void onInflate(const SkDOM& dom, const SkDOM::Node*); - -private: - SkString fLabel; - typedef SkWidget INHERITED; -}; - -class SkButtonWidget : public SkHasLabelWidget { -public: - SkButtonWidget(uint32_t flags = 0) : SkHasLabelWidget(flags), fState(kOff_State) {} - - enum State { - kOff_State, //!< XML: buttonState="off" - kOn_State, //!< XML: buttonState="on" - kUnknown_State //!< XML: buttonState="unknown" - }; - State getButtonState() const { return fState; } - void setButtonState(State); - -protected: - /** called when the label changes. default behavior is to inval the widget */ - virtual void onButtonStateChange(); - - // overrides - virtual void onInflate(const SkDOM& dom, const SkDOM::Node*); - -private: - State fState; - typedef SkHasLabelWidget INHERITED; -}; - -class SkPushButtonWidget : public SkButtonWidget { -public: - SkPushButtonWidget(uint32_t flags = 0) : SkButtonWidget(flags) {} - -protected: - virtual bool onEvent(const SkEvent&); - virtual void onDraw(SkCanvas*); - virtual Click* onFindClickHandler(SkScalar x, SkScalar y); - virtual bool onClick(Click* click); - -private: - typedef SkButtonWidget INHERITED; -}; - -class SkCheckBoxWidget : public SkButtonWidget { -public: - SkCheckBoxWidget(uint32_t flags = 0); - -protected: - virtual bool onEvent(const SkEvent&); - virtual void onDraw(SkCanvas*); - virtual void onInflate(const SkDOM& dom, const SkDOM::Node*); - -private: - typedef SkButtonWidget INHERITED; -}; - -#include "SkTextBox.h" - -class SkStaticTextView : public SkView { -public: - SkStaticTextView(uint32_t flags = 0); - virtual ~SkStaticTextView(); - - enum Mode { - kFixedSize_Mode, - kAutoWidth_Mode, - kAutoHeight_Mode, - - kModeCount - }; - Mode getMode() const { return (Mode)fMode; } - void setMode(Mode); - - SkTextBox::SpacingAlign getSpacingAlign() const { return (SkTextBox::SpacingAlign)fSpacingAlign; } - void setSpacingAlign(SkTextBox::SpacingAlign); - - void getMargin(SkPoint* margin) const; - void setMargin(SkScalar dx, SkScalar dy); - - size_t getText(SkString* text = NULL) const; - size_t getText(char text[] = NULL) const; - void setText(const SkString&); - void setText(const char text[]); - void setText(const char text[], size_t len); - - void getPaint(SkPaint*) const; - void setPaint(const SkPaint&); - -protected: - // overrides - virtual void onDraw(SkCanvas*); - virtual void onInflate(const SkDOM& dom, const SkDOM::Node*); - -private: - SkPoint fMargin; - SkString fText; - SkPaint fPaint; - uint8_t fMode; - uint8_t fSpacingAlign; - - void computeSize(); - - typedef SkView INHERITED; -}; - -class SkBitmapView : public SkView { -public: - SkBitmapView(uint32_t flags = 0); - virtual ~SkBitmapView(); - - bool getBitmap(SkBitmap*) const; - void setBitmap(const SkBitmap*, bool viewOwnsPixels); - bool loadBitmapFromFile(const char path[]); - -protected: - virtual void onDraw(SkCanvas*); - virtual void onInflate(const SkDOM&, const SkDOM::Node*); - -private: - SkBitmap fBitmap; - typedef SkView INHERITED; -}; - -///////////////////////////////////////////////////////////////////////////// - -class SkShader; -class SkInterpolator; - -class SkWidgetView : public SkView { -public: - SkWidgetView(uint32_t flags = 0); - virtual ~SkWidgetView(); - - static const char* GetEventType(); -}; - -class SkSliderView : public SkWidgetView { -public: - SkSliderView(uint32_t flags = 0); - - uint16_t getValue() const { return fValue; } - uint16_t getMax() const { return fMax; } - - void setMax(U16CPU max); - void setValue(U16CPU value); - -protected: - virtual void onDraw(SkCanvas*); - virtual Click* onFindClickHandler(SkScalar x, SkScalar y); - virtual bool onClick(Click*); - -private: - uint16_t fValue, fMax; - - typedef SkWidgetView INHERITED; -}; - -////////////////////////////////////////////////////////////////////////////// - -class SkHasLabelView : public SkView { -public: - void getLabel(SkString*) const; - void setLabel(const SkString&); - void setLabel(const char label[]); - -protected: - SkString fLabel; - - // called when the label changes - virtual void onLabelChange(); - - // overrides - virtual void onInflate(const SkDOM& dom, const SkDOM::Node*); -}; - -class SkPushButtonView : public SkHasLabelView { -public: - SkPushButtonView(uint32_t flags = 0); - -protected: - virtual void onDraw(SkCanvas*); - virtual void onInflate(const SkDOM& dom, const SkDOM::Node*); -}; - -class SkCheckBoxView : public SkHasLabelView { -public: - SkCheckBoxView(uint32_t flags = 0); - - enum State { - kOff_State, - kOn_State, - kMaybe_State - }; - State getState() const { return fState; } - void setState(State); - -protected: - virtual void onDraw(SkCanvas*); - virtual void onInflate(const SkDOM& dom, const SkDOM::Node*); - -private: - State fState; -}; - -class SkProgressView : public SkView { -public: - SkProgressView(uint32_t flags = 0); - virtual ~SkProgressView(); - - uint16_t getValue() const { return fValue; } - uint16_t getMax() const { return fMax; } - - void setMax(U16CPU max); - void setValue(U16CPU value); - -protected: - virtual void onDraw(SkCanvas*); - virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node); - -private: - uint16_t fValue, fMax; - SkShader* fOnShader, *fOffShader; - SkInterpolator* fInterp; - bool fDoInterp; - - typedef SkView INHERITED; -}; - -class SkTextView : public SkView { -public: - SkTextView(uint32_t flags = 0); - virtual ~SkTextView(); - - enum AnimaDir { - kNeutral_AnimDir, - kForward_AnimDir, - kBackward_AnimDir, - kAnimDirCount - }; - - void getText(SkString*) const; - void setText(const SkString&, AnimaDir dir = kNeutral_AnimDir); - void setText(const char text[], AnimaDir dir = kNeutral_AnimDir); - void setText(const char text[], size_t len, AnimaDir dir = kNeutral_AnimDir); - - void getMargin(SkPoint* margin) const; - void setMargin(const SkPoint&); - - SkPaint& paint() { return fPaint; } - -protected: - virtual void onDraw(SkCanvas*); - virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node); - -private: - SkString fText; - SkPaint fPaint; - SkPoint fMargin; - - class Interp; - Interp* fInterp; - bool fDoInterp; - // called by the other setText methods. This guy does not check for != - // before doing the assign, so the caller must check for us - void privSetText(const SkString&, AnimaDir dir); - - typedef SkView INHERITED; -}; - -////////////////////////////////////////////////////////// - -class SkEvent; - -class SkListSource : public SkEventSink { -public: - virtual int countRows() = 0; - virtual void getRow(int index, SkString* left, SkString* right) = 0; - virtual SkEvent* getEvent(int index); - - static SkListSource* CreateFromDir(const char path[], const char suffix[], - const char targetPrefix[]); - static SkListSource* CreateFromDOM(const SkDOM& dom, const SkDOM::Node* node); -}; - -class SkListView : public SkWidgetView { -public: - SkListView(uint32_t flags = 0); - virtual ~SkListView(); - - SkScalar getRowHeight() const { return fRowHeight; } - void setRowHeight(SkScalar); - - /** Return the index of the selected row, or -1 if none - */ - int getSelection() const { return fCurrIndex; } - /** Set the index of the selected row, or -1 for none - */ - void setSelection(int); - - void moveSelectionUp(); - void moveSelectionDown(); - - enum Attr { - kBG_Attr, - kNormalText_Attr, - kHiliteText_Attr, - kHiliteCell_Attr, - kAttrCount - }; - SkPaint& paint(Attr); - - SkListSource* getListSource() const { return fSource; } - SkListSource* setListSource(SkListSource*); - -#if 0 - enum Action { - kSelectionChange_Action, - kSelectionPicked_Action, - kActionCount - }; - /** If event is not null, it is retained by the view, and a copy - of the event will be posted to its listeners when the specified - action occurs. If event is null, then no event will be posted for - the specified action. - */ - void setActionEvent(Action, SkEvent* event); -#endif - -protected: - virtual void onDraw(SkCanvas*); - virtual void onSizeChange(); - virtual bool onEvent(const SkEvent&); - virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node); - -private: - SkPaint fPaint[kAttrCount]; - SkListSource* fSource; - SkScalar fRowHeight; - int fCurrIndex; // logical index - int fScrollIndex; // logical index of top-most visible row - int fVisibleRowCount; - SkString* fStrCache; - - void dirtyStrCache(); - void ensureStrCache(int visibleCount); - - int logicalToVisualIndex(int index) const { return index - fScrollIndex; } - void invalSelection(); - bool getRowRect(int index, SkRect*) const; - void ensureSelectionIsVisible(); - - typedef SkWidgetView INHERITED; -}; - -////////////////////////////////////////////////////////// - -class SkGridView : public SkWidgetView { -public: - SkGridView(uint32_t flags = 0); - virtual ~SkGridView(); - - void getCellSize(SkPoint*) const; - void setCellSize(SkScalar x, SkScalar y); - - /** Return the index of the selected item, or -1 if none - */ - int getSelection() const { return fCurrIndex; } - /** Set the index of the selected row, or -1 for none - */ - void setSelection(int); - - void moveSelectionUp(); - void moveSelectionDown(); - - enum Attr { - kBG_Attr, - kHiliteCell_Attr, - kAttrCount - }; - SkPaint& paint(Attr); - - SkListSource* getListSource() const { return fSource; } - SkListSource* setListSource(SkListSource*); - -protected: - virtual void onDraw(SkCanvas*); - virtual void onSizeChange(); - virtual bool onEvent(const SkEvent&); - virtual void onInflate(const SkDOM& dom, const SkDOM::Node* node); - -private: - SkView* fScrollBar; - SkPaint fPaint[kAttrCount]; - SkListSource* fSource; - int fCurrIndex; // logical index - - SkPoint fCellSize; - SkIPoint fVisibleCount; - - int logicalToVisualIndex(int index) const { return index; } - void invalSelection(); - bool getCellRect(int index, SkRect*) const; - void ensureSelectionIsVisible(); - - typedef SkWidgetView INHERITED; -}; - -#endif - |