From 0bb6d06622eca40694b8bdea21d697a458d41b4c Mon Sep 17 00:00:00 2001 From: "reed@android.com" Date: Mon, 17 May 2010 14:50:04 +0000 Subject: updates git-svn-id: http://skia.googlecode.com/svn/trunk@567 2bbb7eff-a529-9590-31e7-b0007b416f81 --- samplecode/SampleTextBox.cpp | 101 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 samplecode/SampleTextBox.cpp (limited to 'samplecode/SampleTextBox.cpp') 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); + -- cgit v1.2.3