1*d7f7bf2dSAxel Dörfler /* 2*d7f7bf2dSAxel Dörfler * Copyright 2013, Stephan Aßmus <superstippi@gmx.de>. 3*d7f7bf2dSAxel Dörfler * All rights reserved. Distributed under the terms of the MIT License. 4*d7f7bf2dSAxel Dörfler */ 5*d7f7bf2dSAxel Dörfler 6*d7f7bf2dSAxel Dörfler #include "ParagraphStyle.h" 7*d7f7bf2dSAxel Dörfler 8*d7f7bf2dSAxel Dörfler 9*d7f7bf2dSAxel Dörfler ParagraphStyle::ParagraphStyle() 10*d7f7bf2dSAxel Dörfler : 11*d7f7bf2dSAxel Dörfler fStyleData(new ParagraphStyleData(), true) 12*d7f7bf2dSAxel Dörfler { 13*d7f7bf2dSAxel Dörfler } 14*d7f7bf2dSAxel Dörfler 15*d7f7bf2dSAxel Dörfler 16*d7f7bf2dSAxel Dörfler ParagraphStyle::ParagraphStyle(const ParagraphStyle& other) 17*d7f7bf2dSAxel Dörfler : 18*d7f7bf2dSAxel Dörfler fStyleData(other.fStyleData) 19*d7f7bf2dSAxel Dörfler { 20*d7f7bf2dSAxel Dörfler } 21*d7f7bf2dSAxel Dörfler 22*d7f7bf2dSAxel Dörfler 23*d7f7bf2dSAxel Dörfler ParagraphStyle& 24*d7f7bf2dSAxel Dörfler ParagraphStyle::operator=(const ParagraphStyle& other) 25*d7f7bf2dSAxel Dörfler { 26*d7f7bf2dSAxel Dörfler if (this == &other) 27*d7f7bf2dSAxel Dörfler return *this; 28*d7f7bf2dSAxel Dörfler 29*d7f7bf2dSAxel Dörfler fStyleData = other.fStyleData; 30*d7f7bf2dSAxel Dörfler return *this; 31*d7f7bf2dSAxel Dörfler } 32*d7f7bf2dSAxel Dörfler 33*d7f7bf2dSAxel Dörfler 34*d7f7bf2dSAxel Dörfler bool 35*d7f7bf2dSAxel Dörfler ParagraphStyle::operator==(const ParagraphStyle& other) const 36*d7f7bf2dSAxel Dörfler { 37*d7f7bf2dSAxel Dörfler if (this == &other) 38*d7f7bf2dSAxel Dörfler return true; 39*d7f7bf2dSAxel Dörfler 40*d7f7bf2dSAxel Dörfler if (fStyleData == other.fStyleData) 41*d7f7bf2dSAxel Dörfler return true; 42*d7f7bf2dSAxel Dörfler 43*d7f7bf2dSAxel Dörfler if (fStyleData.Get() != NULL && other.fStyleData.Get() != NULL) 44*d7f7bf2dSAxel Dörfler return *fStyleData.Get() == *other.fStyleData.Get(); 45*d7f7bf2dSAxel Dörfler 46*d7f7bf2dSAxel Dörfler return false; 47*d7f7bf2dSAxel Dörfler } 48*d7f7bf2dSAxel Dörfler 49*d7f7bf2dSAxel Dörfler 50*d7f7bf2dSAxel Dörfler bool 51*d7f7bf2dSAxel Dörfler ParagraphStyle::operator!=(const ParagraphStyle& other) const 52*d7f7bf2dSAxel Dörfler { 53*d7f7bf2dSAxel Dörfler return !(*this == other); 54*d7f7bf2dSAxel Dörfler } 55*d7f7bf2dSAxel Dörfler 56*d7f7bf2dSAxel Dörfler 57*d7f7bf2dSAxel Dörfler bool 58*d7f7bf2dSAxel Dörfler ParagraphStyle::SetAlignment(::Alignment alignment) 59*d7f7bf2dSAxel Dörfler { 60*d7f7bf2dSAxel Dörfler ParagraphStyleDataRef data = fStyleData->SetAlignment(alignment); 61*d7f7bf2dSAxel Dörfler if (data == fStyleData) 62*d7f7bf2dSAxel Dörfler return data->Alignment() == alignment; 63*d7f7bf2dSAxel Dörfler 64*d7f7bf2dSAxel Dörfler fStyleData = data; 65*d7f7bf2dSAxel Dörfler return true; 66*d7f7bf2dSAxel Dörfler } 67*d7f7bf2dSAxel Dörfler 68*d7f7bf2dSAxel Dörfler 69*d7f7bf2dSAxel Dörfler ::Alignment 70*d7f7bf2dSAxel Dörfler ParagraphStyle::Alignment() const 71*d7f7bf2dSAxel Dörfler { 72*d7f7bf2dSAxel Dörfler return fStyleData->Alignment(); 73*d7f7bf2dSAxel Dörfler } 74*d7f7bf2dSAxel Dörfler 75*d7f7bf2dSAxel Dörfler 76*d7f7bf2dSAxel Dörfler bool 77*d7f7bf2dSAxel Dörfler ParagraphStyle::SetJustify(bool justify) 78*d7f7bf2dSAxel Dörfler { 79*d7f7bf2dSAxel Dörfler ParagraphStyleDataRef data = fStyleData->SetJustify(justify); 80*d7f7bf2dSAxel Dörfler if (data == fStyleData) 81*d7f7bf2dSAxel Dörfler return data->Justify() == justify; 82*d7f7bf2dSAxel Dörfler 83*d7f7bf2dSAxel Dörfler fStyleData = data; 84*d7f7bf2dSAxel Dörfler return true; 85*d7f7bf2dSAxel Dörfler } 86*d7f7bf2dSAxel Dörfler 87*d7f7bf2dSAxel Dörfler 88*d7f7bf2dSAxel Dörfler bool 89*d7f7bf2dSAxel Dörfler ParagraphStyle::Justify() const 90*d7f7bf2dSAxel Dörfler { 91*d7f7bf2dSAxel Dörfler return fStyleData->Justify(); 92*d7f7bf2dSAxel Dörfler } 93*d7f7bf2dSAxel Dörfler 94*d7f7bf2dSAxel Dörfler 95*d7f7bf2dSAxel Dörfler bool 96*d7f7bf2dSAxel Dörfler ParagraphStyle::SetFirstLineInset(float inset) 97*d7f7bf2dSAxel Dörfler { 98*d7f7bf2dSAxel Dörfler ParagraphStyleDataRef data = fStyleData->SetFirstLineInset(inset); 99*d7f7bf2dSAxel Dörfler if (data == fStyleData) 100*d7f7bf2dSAxel Dörfler return data->FirstLineInset() == inset; 101*d7f7bf2dSAxel Dörfler 102*d7f7bf2dSAxel Dörfler fStyleData = data; 103*d7f7bf2dSAxel Dörfler return true; 104*d7f7bf2dSAxel Dörfler } 105*d7f7bf2dSAxel Dörfler 106*d7f7bf2dSAxel Dörfler 107*d7f7bf2dSAxel Dörfler float 108*d7f7bf2dSAxel Dörfler ParagraphStyle::FirstLineInset() const 109*d7f7bf2dSAxel Dörfler { 110*d7f7bf2dSAxel Dörfler return fStyleData->FirstLineInset(); 111*d7f7bf2dSAxel Dörfler } 112*d7f7bf2dSAxel Dörfler 113*d7f7bf2dSAxel Dörfler 114*d7f7bf2dSAxel Dörfler bool 115*d7f7bf2dSAxel Dörfler ParagraphStyle::SetLineInset(float inset) 116*d7f7bf2dSAxel Dörfler { 117*d7f7bf2dSAxel Dörfler ParagraphStyleDataRef data = fStyleData->SetLineInset(inset); 118*d7f7bf2dSAxel Dörfler if (data == fStyleData) 119*d7f7bf2dSAxel Dörfler return data->LineInset() == inset; 120*d7f7bf2dSAxel Dörfler 121*d7f7bf2dSAxel Dörfler fStyleData = data; 122*d7f7bf2dSAxel Dörfler return true; 123*d7f7bf2dSAxel Dörfler } 124*d7f7bf2dSAxel Dörfler 125*d7f7bf2dSAxel Dörfler 126*d7f7bf2dSAxel Dörfler float 127*d7f7bf2dSAxel Dörfler ParagraphStyle::LineInset() const 128*d7f7bf2dSAxel Dörfler { 129*d7f7bf2dSAxel Dörfler return fStyleData->LineInset(); 130*d7f7bf2dSAxel Dörfler } 131*d7f7bf2dSAxel Dörfler 132*d7f7bf2dSAxel Dörfler 133*d7f7bf2dSAxel Dörfler bool 134*d7f7bf2dSAxel Dörfler ParagraphStyle::SetLineSpacing(float spacing) 135*d7f7bf2dSAxel Dörfler { 136*d7f7bf2dSAxel Dörfler ParagraphStyleDataRef data = fStyleData->SetLineSpacing(spacing); 137*d7f7bf2dSAxel Dörfler if (data == fStyleData) 138*d7f7bf2dSAxel Dörfler return data->LineSpacing() == spacing; 139*d7f7bf2dSAxel Dörfler 140*d7f7bf2dSAxel Dörfler fStyleData = data; 141*d7f7bf2dSAxel Dörfler return true; 142*d7f7bf2dSAxel Dörfler } 143*d7f7bf2dSAxel Dörfler 144*d7f7bf2dSAxel Dörfler 145*d7f7bf2dSAxel Dörfler float 146*d7f7bf2dSAxel Dörfler ParagraphStyle::LineSpacing() const 147*d7f7bf2dSAxel Dörfler { 148*d7f7bf2dSAxel Dörfler return fStyleData->LineSpacing(); 149*d7f7bf2dSAxel Dörfler } 150*d7f7bf2dSAxel Dörfler 151*d7f7bf2dSAxel Dörfler 152*d7f7bf2dSAxel Dörfler bool 153*d7f7bf2dSAxel Dörfler ParagraphStyle::SetSpacingTop(float spacing) 154*d7f7bf2dSAxel Dörfler { 155*d7f7bf2dSAxel Dörfler ParagraphStyleDataRef data = fStyleData->SetSpacingTop(spacing); 156*d7f7bf2dSAxel Dörfler if (data == fStyleData) 157*d7f7bf2dSAxel Dörfler return data->SpacingTop() == spacing; 158*d7f7bf2dSAxel Dörfler 159*d7f7bf2dSAxel Dörfler fStyleData = data; 160*d7f7bf2dSAxel Dörfler return true; 161*d7f7bf2dSAxel Dörfler } 162*d7f7bf2dSAxel Dörfler 163*d7f7bf2dSAxel Dörfler 164*d7f7bf2dSAxel Dörfler float 165*d7f7bf2dSAxel Dörfler ParagraphStyle::SpacingTop() const 166*d7f7bf2dSAxel Dörfler { 167*d7f7bf2dSAxel Dörfler return fStyleData->SpacingTop(); 168*d7f7bf2dSAxel Dörfler } 169*d7f7bf2dSAxel Dörfler 170*d7f7bf2dSAxel Dörfler 171*d7f7bf2dSAxel Dörfler bool 172*d7f7bf2dSAxel Dörfler ParagraphStyle::SetSpacingBottom(float spacing) 173*d7f7bf2dSAxel Dörfler { 174*d7f7bf2dSAxel Dörfler ParagraphStyleDataRef data = fStyleData->SetSpacingBottom(spacing); 175*d7f7bf2dSAxel Dörfler if (data == fStyleData) 176*d7f7bf2dSAxel Dörfler return data->SpacingBottom() == spacing; 177*d7f7bf2dSAxel Dörfler 178*d7f7bf2dSAxel Dörfler fStyleData = data; 179*d7f7bf2dSAxel Dörfler return true; 180*d7f7bf2dSAxel Dörfler } 181*d7f7bf2dSAxel Dörfler 182*d7f7bf2dSAxel Dörfler 183*d7f7bf2dSAxel Dörfler float 184*d7f7bf2dSAxel Dörfler ParagraphStyle::SpacingBottom() const 185*d7f7bf2dSAxel Dörfler { 186*d7f7bf2dSAxel Dörfler return fStyleData->SpacingBottom(); 187*d7f7bf2dSAxel Dörfler } 188*d7f7bf2dSAxel Dörfler 189*d7f7bf2dSAxel Dörfler 190*d7f7bf2dSAxel Dörfler bool 191*d7f7bf2dSAxel Dörfler ParagraphStyle::SetBullet(const ::Bullet& bullet) 192*d7f7bf2dSAxel Dörfler { 193*d7f7bf2dSAxel Dörfler ParagraphStyleDataRef data = fStyleData->SetBullet(bullet); 194*d7f7bf2dSAxel Dörfler if (data == fStyleData) 195*d7f7bf2dSAxel Dörfler return data->Bullet() == bullet; 196*d7f7bf2dSAxel Dörfler 197*d7f7bf2dSAxel Dörfler fStyleData = data; 198*d7f7bf2dSAxel Dörfler return true; 199*d7f7bf2dSAxel Dörfler } 200*d7f7bf2dSAxel Dörfler 201*d7f7bf2dSAxel Dörfler 202*d7f7bf2dSAxel Dörfler const ::Bullet& 203*d7f7bf2dSAxel Dörfler ParagraphStyle::Bullet() const 204*d7f7bf2dSAxel Dörfler { 205*d7f7bf2dSAxel Dörfler return fStyleData->Bullet(); 206*d7f7bf2dSAxel Dörfler } 207*d7f7bf2dSAxel Dörfler 208*d7f7bf2dSAxel Dörfler 209