00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef SkTextBox_DEFINED
00018 #define SkTextBox_DEFINED
00019
00020 #include "SkCanvas.h"
00021
00033 class SkTextBox {
00034 public:
00035 SkTextBox();
00036
00037 enum Mode {
00038 kOneLine_Mode,
00039 kLineBreak_Mode,
00040
00041 kModeCount
00042 };
00043 Mode getMode() const { return (Mode)fMode; }
00044 void setMode(Mode);
00045
00046 enum SpacingAlign {
00047 kStart_SpacingAlign,
00048 kCenter_SpacingAlign,
00049 kEnd_SpacingAlign,
00050
00051 kSpacingAlignCount
00052 };
00053 SpacingAlign getSpacingAlign() const { return (SpacingAlign)fSpacingAlign; }
00054 void setSpacingAlign(SpacingAlign);
00055
00056 void getBox(SkRect*) const;
00057 void setBox(const SkRect&);
00058 void setBox(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom);
00059
00060 void getSpacing(SkScalar* mul, SkScalar* add) const;
00061 void setSpacing(SkScalar mul, SkScalar add);
00062
00063 void draw(SkCanvas*, const char text[], size_t len, const SkPaint&);
00064
00065 private:
00066 SkRect fBox;
00067 SkScalar fSpacingMul, fSpacingAdd;
00068 uint8_t fMode, fSpacingAlign;
00069 };
00070
00071 class SkTextLineBreaker {
00072 public:
00073 static int CountLines(const char text[], size_t len, const SkPaint&, SkScalar width);
00074 };
00075
00076 #endif
00077