00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #pragma once
00024
00025 #include "cinder/Cinder.h"
00026
00027 #include "cinder/Surface.h"
00028 #include "cinder/Font.h"
00029
00030 #include <vector>
00031 #include <deque>
00032 #include <string>
00033
00034 namespace cinder {
00035
00036 class TextLayout {
00037 public:
00043 TextLayout();
00044
00046 void clear( const Color &color );
00048 void clear( const ColorA &color );
00049
00051 void addLine( const std::string &line );
00053 void addCenteredLine( const std::string &line );
00055 void addRightLine( const std::string &line );
00057 void append( const std::string &str );
00058
00059 void setFont( const Font &font );
00061 void setColor( const Color &color );
00063 void setColor( const ColorA &color );
00065 void setLeadingOffset( float leadingOffset );
00066
00068 void setBorder( int horizontal, int vertical );
00069
00071 Surface render( bool useAlpha = false, bool premultiplied = false );
00072
00073 private:
00074 ColorA mBackgroundColor;
00075 Font mCurrentFont;
00076 ColorA mCurrentColor;
00077 float mCurrentLeadingOffset;
00078 int mHorizontalBorder, mVerticalBorder;
00079
00080 std::deque<shared_ptr<class Line> > mLines;
00081 };
00082
00087 Surface renderString( const std::string &str, const Font &font, const ColorA &color, float *baselineOffset = 0 );
00088
00089 }