aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode/SampleTextBox.cpp
diff options
context:
space:
mode:
authorGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2010-05-17 14:50:04 +0000
committerGravatar reed@android.com <reed@android.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2010-05-17 14:50:04 +0000
commit0bb6d06622eca40694b8bdea21d697a458d41b4c (patch)
treeb7e6a333573e5c5718744fe5fcb01f7b57c3dccf /samplecode/SampleTextBox.cpp
parent5ee64ad6b54edc07849fa04681801802b7102590 (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.cpp101
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);
+