OSDN Git Service

Change the webbrowser commnad gnome-open to firefox.
[fukui-no-namari/dialektos.git] / src / text_element_plain.hxx
index 3f40a88..d31ff26 100644 (file)
@@ -25,8 +25,9 @@
 #include <glibmm/ustring.h>
 #include <gdkmm/cursor.h>
 #include <gdkmm/rectangle.h>
-#include <pangomm/layout.h>
-#include <pangomm/attrlist.h>
+#include <pangomm/context.h>
+#include <pangomm/item.h>
+#include <pangomm/fontmetrics.h>
 #include <boost/range.hpp>
 #include "text_element_char_size_cache.hxx"
 
@@ -77,7 +78,7 @@ public:
   template <typename RangeT>
   Plain(const RangeT& range, bool bold) :
     str_(boost::begin(range), boost::end(range)),
-    bold_(bold), x_(0), y_(0), x_start_(0), x_end_(0) {}
+    bold_(bold), x_(0), y_(0), x_start_(0), x_end_(0), items_(), metrics_() {}
 
   virtual ~Plain() {}
 
@@ -156,23 +157,30 @@ public:
    */
   virtual Gdk::CursorType get_cursor_type() const;
 
+  void itemize(const Glib::RefPtr<Pango::Context>&, const Pango::FontMetrics&);
+
   /*! @brief return an approximate character height.
    *
    * @param layout for calculating the character height.
    * @return the approximate height.
    */
-  static double get_approximate_char_height(Glib::RefPtr<const Pango::Layout> layout);
+  static double get_approximate_char_height(const Pango::FontMetrics&);
 
 protected:
 
-  /*! @brief set attributes for drawing the plain text element.
-   *
-   * @param list
-   */
-  virtual void set_attributes(Pango::AttrList& list) const;
+  virtual void do_draw_glyphs(text_view::DrawingSet&, const Pango::Item&,
+      const Pango::GlyphString&, double x, double y,
+      bool in_selection) const;
+
+  Pango::FontMetrics get_metrics() const;
 
 private:
   virtual Plain* do_clone() const { return new Plain(*this); }
+
+  void do_draw(text_view::DrawingSet&, const Pango::Item&,
+      const Pango::GlyphString&, double x, double y,
+      bool in_selection) const;
+
   void get_selection_start_end_index(const Plain*, size_t, const Plain*, size_t,
       size_t&, size_t&) const;
 
@@ -185,8 +193,11 @@ private:
   gdouble x_start_;
   gdouble x_end_;
 
+  std::vector<Pango::Item> items_;
+
+  Pango::FontMetrics metrics_;
+
   static CharSizeCache char_size_cache;
-  static gdouble approximate_char_height;
 };
 
 /*! @brief clone the text element type. This function is for Boost.PtrContainer.