From: dirk Date: Sat, 11 Jan 2014 11:20:56 +0000 (+0000) Subject: Added text kerning/spacing to Magick++. X-Git-Tag: 7.0.1-0~2904 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a424799a0e5bfd6d1b7941c044e067fbf18d319f;p=imagemagick Added text kerning/spacing to Magick++. --- diff --git a/Magick++/lib/Drawable.cpp b/Magick++/lib/Drawable.cpp index 87b4fede1..22da085e0 100644 --- a/Magick++/lib/Drawable.cpp +++ b/Magick++/lib/Drawable.cpp @@ -1354,6 +1354,102 @@ Magick::DrawableBase* Magick::DrawableTextDecoration::copy() const return new DrawableTextDecoration(*this); } +// DrawableTextInterlineSpacing +Magick::DrawableTextInterlineSpacing::DrawableTextInterlineSpacing( + double spacing_) + : _spacing(spacing_) +{ +} + +Magick::DrawableTextInterlineSpacing::~DrawableTextInterlineSpacing(void) +{ +} + +void Magick::DrawableTextInterlineSpacing::operator()( + MagickCore::DrawingWand *context_) const +{ + DrawSetTextInterlineSpacing(context_,_spacing); +} + +void Magick::DrawableTextInterlineSpacing::spacing(double spacing_) +{ + _spacing=spacing_; +} + +double Magick::DrawableTextInterlineSpacing::spacing(void) const +{ + return(_spacing); +} + +Magick::DrawableBase *Magick::DrawableTextInterlineSpacing::copy() const +{ + return new DrawableTextInterlineSpacing(*this); +} + +// DrawableTextInterwordSpacing +Magick::DrawableTextInterwordSpacing::DrawableTextInterwordSpacing( + double spacing_) + : _spacing(spacing_) +{ +} + +Magick::DrawableTextInterwordSpacing::~DrawableTextInterwordSpacing(void) +{ +} + +void Magick::DrawableTextInterwordSpacing::operator()( + MagickCore::DrawingWand *context_) const +{ + DrawSetTextInterwordSpacing(context_,_spacing); +} + +void Magick::DrawableTextInterwordSpacing::spacing(double spacing_) +{ + _spacing=spacing_; +} + +double Magick::DrawableTextInterwordSpacing::spacing(void) const +{ + return(_spacing); +} + +Magick::DrawableBase *Magick::DrawableTextInterwordSpacing::copy() const +{ + return new DrawableTextInterwordSpacing(*this); +} + +// DrawableTextKerning +Magick::DrawableTextKerning::DrawableTextKerning( + double kerning_) + : _kerning(kerning_) +{ +} + +Magick::DrawableTextKerning::~DrawableTextKerning(void) +{ +} + +void Magick::DrawableTextKerning::operator()( + MagickCore::DrawingWand *context_) const +{ + DrawSetTextKerning(context_,_kerning); +} + +void Magick::DrawableTextKerning::kerning(double kerning_) +{ + _kerning=kerning_; +} + +double Magick::DrawableTextKerning::kerning(void) const +{ + return(_kerning); +} + +Magick::DrawableBase *Magick::DrawableTextKerning::copy() const +{ + return new DrawableTextKerning(*this); +} + // Set text undercolor Magick::DrawableTextUnderColor::DrawableTextUnderColor ( const Magick::Color &color_ ) diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index d214fa39d..060741243 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -1491,6 +1491,39 @@ std::string Magick::Image::textEncoding(void) const return(constOptions()->textEncoding()); } +void Magick::Image::textInterlineSpacing(double spacing_) +{ + modifyImage(); + options()->textInterlineSpacing(spacing_); +} + +double Magick::Image::textInterlineSpacing(void) const +{ + return(constOptions()->textInterlineSpacing()); +} + +void Magick::Image::textInterwordSpacing(double spacing_) +{ + modifyImage(); + options()->textInterwordSpacing(spacing_); +} + +double Magick::Image::textInterwordSpacing(void) const +{ + return(constOptions()->textInterwordSpacing()); +} + +void Magick::Image::textKerning(double kerning_) +{ + modifyImage(); + options()->textKerning(kerning_); +} + +double Magick::Image::textKerning(void) const +{ + return(constOptions()->textKerning()); +} + size_t Magick::Image::totalColors(void) const { size_t diff --git a/Magick++/lib/Magick++/Drawable.h b/Magick++/lib/Magick++/Drawable.h index 71edebe1b..59d203690 100644 --- a/Magick++/lib/Magick++/Drawable.h +++ b/Magick++/lib/Magick++/Drawable.h @@ -1986,6 +1986,66 @@ private: DecorationType _decoration; }; + // Specify text inter-line spacing + class MagickPPExport DrawableTextInterlineSpacing : public DrawableBase + { + public: + + DrawableTextInterlineSpacing(double spacing_); + + ~DrawableTextInterlineSpacing(void); + + void operator()(MagickCore::DrawingWand *context_) const; + + void spacing(double spacing_); + double spacing(void) const; + + DrawableBase* copy() const; + + private: + double _spacing; + }; + + // Specify text inter-word spacing + class MagickPPExport DrawableTextInterwordSpacing : public DrawableBase + { + public: + + DrawableTextInterwordSpacing(double spacing_); + + ~DrawableTextInterwordSpacing(void); + + void operator()(MagickCore::DrawingWand *context_) const; + + void spacing(double spacing_); + double spacing(void) const; + + DrawableBase *copy() const; + + private: + double _spacing; + }; + + // Specify text kerning + class MagickPPExport DrawableTextKerning : public DrawableBase + { + public: + + DrawableTextKerning(double kerning_); + + ~DrawableTextKerning(void); + + void operator()(MagickCore::DrawingWand *context_) const; + + void kerning(double kerning_); + double kerning(void) const; + + DrawableBase *copy() const; + + private: + double _kerning; + }; + // Text undercolor box class MagickPPExport DrawableTextUnderColor : public DrawableBase { diff --git a/Magick++/lib/Magick++/Image.h b/Magick++/lib/Magick++/Image.h index 2b6482915..4c8cd1788 100644 --- a/Magick++/lib/Magick++/Image.h +++ b/Magick++/lib/Magick++/Image.h @@ -474,6 +474,18 @@ namespace Magick void textEncoding(const std::string &encoding_); std::string textEncoding(void) const; + // Text inter-line spacing + void textInterlineSpacing(double spacing_); + double textInterlineSpacing(void) const; + + // Text inter-word spacing + void textInterwordSpacing(double spacing_); + double textInterwordSpacing(void) const; + + // Text inter-character kerning + void textKerning(double kerning_); + double textKerning(void) const; + // Number of colors in the image size_t totalColors(void) const; diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h index abf981edd..4cbb5e7be 100644 --- a/Magick++/lib/Magick++/Include.h +++ b/Magick++/lib/Magick++/Include.h @@ -1099,6 +1099,9 @@ namespace Magick using MagickCore::DrawSetTextAntialias; using MagickCore::DrawSetTextDecoration; using MagickCore::DrawSetTextEncoding; + using MagickCore::DrawSetTextInterlineSpacing; + using MagickCore::DrawSetTextInterwordSpacing; + using MagickCore::DrawSetTextKerning; using MagickCore::DrawSetTextUnderColor; using MagickCore::DrawSetViewbox; using MagickCore::DrawSkewX; diff --git a/Magick++/lib/Magick++/Options.h b/Magick++/lib/Magick++/Options.h index 8cbdd7584..43690ecbe 100644 --- a/Magick++/lib/Magick++/Options.h +++ b/Magick++/lib/Magick++/Options.h @@ -235,6 +235,18 @@ namespace Magick void textEncoding(const std::string &encoding_); std::string textEncoding(void) const; + // Text inter-line spacing + void textInterlineSpacing(double spacing_); + double textInterlineSpacing(void) const; + + // Text inter-word spacing + void textInterwordSpacing(double spacing_); + double textInterwordSpacing(void) const; + + // Text inter-character kerning + void textKerning(double kerning_); + double textKerning(void) const; + void tileName(const std::string &tileName_); std::string tileName(void) const; // Origin of coordinate system to use when annotating with text or drawing diff --git a/Magick++/lib/Options.cpp b/Magick++/lib/Options.cpp index ca299a26b..84ebe79b4 100644 --- a/Magick++/lib/Options.cpp +++ b/Magick++/lib/Options.cpp @@ -638,6 +638,36 @@ std::string Magick::Options::textEncoding(void) const return(std::string()); } +void Magick::Options::textInterlineSpacing(double spacing_) +{ + _drawInfo->interline_spacing=spacing_; +} + +double Magick::Options::textInterlineSpacing(void) const +{ + return(_drawInfo->interline_spacing); +} + +void Magick::Options::textInterwordSpacing(double spacing_) +{ + _drawInfo->interword_spacing=spacing_; +} + +double Magick::Options::textInterwordSpacing(void) const +{ + return(_drawInfo->interword_spacing); +} + +void Magick::Options::textKerning(double kerning_) +{ + _drawInfo->kerning=kerning_; +} + +double Magick::Options::textKerning(void) const +{ + return(_drawInfo->kerning); +} + void Magick::Options::transformOrigin(double tx_,double ty_) { AffineMatrix