aboutsummaryrefslogtreecommitdiff
path: root/src/unstable/text.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/unstable/text.cpp')
-rw-r--r--src/unstable/text.cpp55
1 files changed, 49 insertions, 6 deletions
diff --git a/src/unstable/text.cpp b/src/unstable/text.cpp
index 9e5670d..6ec41da 100644
--- a/src/unstable/text.cpp
+++ b/src/unstable/text.cpp
@@ -6,22 +6,34 @@
6 */ 6 */
7 7
8#include "bu/text.h" 8#include "bu/text.h"
9
10#include "bu/exceptionbase.h"
11
9#include <string.h> 12#include <string.h>
10 13
11Bu::Text::Text() : 14Bu::Text::Text() :
12 pData( NULL ), 15 pData( NULL ),
13 iSize( 0 ), 16 bIsBmpOnly( true ),
14 iCodePoints( 0 ) 17 iSize( 0 )
15{ 18{
16} 19}
17 20
18Bu::Text::Text( const Text &rSrc ) : 21Bu::Text::Text( const Text &rSrc ) :
19 pData( NULL ), 22 pData( NULL ),
20 iSize( rSrc.iSize ), 23 bIsBmpOnly( rSrc.bIsBmpOnly ),
21 iCodePoints( rSrc.iCodePoints ) 24 iSize( rSrc.iSize )
25{
26 pData = new CodePoint[iSize];
27 memcpy( pData, rSrc.pData, sizeof(CodePoint)*iSize );
28}
29
30Bu::Text::Text( const TextBuilder &rSrc ) :
31 pData( NULL ),
32 bIsBmpOnly( true ),
33 iSize( rSrc.getSize() )
22{ 34{
23 pData = new uint16_t[iSize]; 35 pData = new CodePoint[iSize];
24 memcpy( pData, rSrc.pData, sizeof(uint16_t)*iSize ); 36
25} 37}
26 38
27Bu::Text::~Text() 39Bu::Text::~Text()
@@ -30,4 +42,35 @@ Bu::Text::~Text()
30 pData = NULL; 42 pData = NULL;
31} 43}
32 44
45bool Bu::Text::isEmpty() const
46{
47 return (iSize == 0);
48}
49
50bool Bu::Text::isBmpOnly() const
51{
52 return bIsBmpOnly;
53}
54
55int32_t Bu::Text::getSize() const
56{
57 return iSize;
58}
59
60int32_t Bu::Text::getSizeInBytes() const
61{
62 return iSize*sizeof(CodePoint);
63}
64
65Bu::CodePoint Bu::Text::operator[]( int32_t iIndex ) const
66{
67 if( iIndex < 0 || iIndex >= iSize )
68 throw Bu::ExceptionBase("Index out of range.");
69 return pData[iIndex];
70}
71
72Bu::CodePoint *Bu::Text::getData() const
73{
74 return pData;
75}
33 76