diff options
author | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2010-05-17 14:50:04 +0000 |
---|---|---|
committer | reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2010-05-17 14:50:04 +0000 |
commit | 0bb6d06622eca40694b8bdea21d697a458d41b4c (patch) | |
tree | b7e6a333573e5c5718744fe5fcb01f7b57c3dccf /samplecode/SampleTextBox.cpp | |
parent | 5ee64ad6b54edc07849fa04681801802b7102590 (diff) |
updates
git-svn-id: http://skia.googlecode.com/svn/trunk@567 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode/SampleTextBox.cpp')
-rw-r--r-- | samplecode/SampleTextBox.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/samplecode/SampleTextBox.cpp b/samplecode/SampleTextBox.cpp new file mode 100644 index 0000000000..f8f52a2f71 --- /dev/null +++ b/samplecode/SampleTextBox.cpp @@ -0,0 +1,101 @@ +#include "SampleCode.h" +#include "SkView.h" +#include "SkBlurMaskFilter.h" +#include "SkCanvas.h" +#include "SkGradientShader.h" +#include "SkGraphics.h" +#include "SkImageDecoder.h" +#include "SkPath.h" +#include "SkRandom.h" +#include "SkRegion.h" +#include "SkShader.h" +#include "SkUtils.h" +#include "SkXfermode.h" +#include "SkColorPriv.h" +#include "SkColorFilter.h" +#include "SkTime.h" +#include "SkTypeface.h" +#include "SkTextBox.h" +#include "SkOSFile.h" +#include "SkStream.h" +#include "SkKey.h" + +static const char gText[] = + "When in the Course of human events it becomes necessary for one people " + "to dissolve the political bands which have connected them with another " + "and to assume among the powers of the earth, the separate and equal " + "station to which the Laws of Nature and of Nature's God entitle them, " + "a decent respect to the opinions of mankind requires that they should " + "declare the causes which impel them to the separation."; + +class TextBoxView : public SkView { +public: + TextBoxView() { + fTextSize = SkIntToScalar(32); + } + +protected: + // overrides from SkEventSink + virtual bool onQuery(SkEvent* evt) { + if (SampleCode::TitleQ(*evt)) { + SkString str("TextBox"); + SampleCode::TitleR(evt, str.c_str()); + return true; + } + return this->INHERITED::onQuery(evt); + } + + void drawBG(SkCanvas* canvas) { + canvas->drawColor(SK_ColorWHITE); + } + + virtual void onDraw(SkCanvas* canvas) { + this->drawBG(canvas); + + SkScalar margin = 20; + SkTextBox tbox; + tbox.setMode(SkTextBox::kLineBreak_Mode); + tbox.setBox(margin, margin, + this->width() - margin, this->height() - margin); + tbox.setSpacing(SkIntToScalar(3)/3, 0); + + SkPaint paint; + paint.setAntiAlias(true); + paint.setTextSize(fTextSize); + + tbox.draw(canvas, gText, strlen(gText), paint); + } + + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + return new Click(this); + } + + virtual bool onClick(Click* click) { + const SkScalar delta = SkIntToScalar(3); + if (click->fState == Click::kUp_State) { + if (click->fCurr.fY < this->height()/2) { + fTextSize += delta; + this->inval(NULL); + return true; + } else { + if (fTextSize > delta) { + fTextSize -= delta; + this->inval(NULL); + return true; + } + } + } + return this->INHERITED::onClick(click); + } + +private: + SkScalar fTextSize; + + typedef SkView INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +static SkView* MyFactory() { return new TextBoxView; } +static SkViewRegister reg(MyFactory); + |