#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"
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() {}
*/
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;
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.