Added text kerning/spacing to Magick++.
authordirk <dirk@git.imagemagick.org>
Sat, 11 Jan 2014 11:20:56 +0000 (11:20 +0000)
committerdirk <dirk@git.imagemagick.org>
Sat, 11 Jan 2014 11:20:56 +0000 (11:20 +0000)
Magick++/lib/Drawable.cpp
Magick++/lib/Image.cpp
Magick++/lib/Magick++/Drawable.h
Magick++/lib/Magick++/Image.h
Magick++/lib/Magick++/Include.h
Magick++/lib/Magick++/Options.h
Magick++/lib/Options.cpp

index 87b4fede1daaf6001ca11a8dd34b174b43574f25..22da085e06f8d798572275f48f0d47ed25e72de6 100644 (file)
@@ -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_ )
index d214fa39d36496da212b77f5c22e89242b65eea1..060741243a558f35339c7f23f13afb1038076aec 100644 (file)
@@ -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
index 71edebe1beb8ee855d907bde69974ffe25385e73..59d203690a5166dd9e263ba709b4e1a15f6c0f07 100644 (file)
@@ -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
 {
index 2b6482915f9b3dab5a5ff1a19c6f7dab196c946f..4c8cd178881d226a4ed8f2183d968535942449dd 100644 (file)
@@ -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;
 
index abf981edd4e9a6dcec990188b30b955f3620c291..4cbb5e7bef8d0b69818f67301710f418ce4ca900 100644 (file)
@@ -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;
index 8cbdd75843eb68fea69a1d98d62f6a635eff5d64..43690ecbea08a8611060b20aa3c05d8181367e35 100644 (file)
@@ -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
index ca299a26be2e085a6844da60ee684484b5217011..84ebe79b423608943988d983ae125b8e4e631ce1 100644 (file)
@@ -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