]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetHFill.cpp
Embedding: display a pin at the top left corner of embedded figures
[lyx.git] / src / insets / InsetHFill.cpp
index c9f392c2590e4725a9b542a1d5977c6cf197585a..76af40d23f839be8b0dcc6e3162db23d927afde1 100644 (file)
 #include <config.h>
 
 #include "InsetHFill.h"
+
+#include "MetricsInfo.h"
+
+#include "frontends/Painter.h"
+
 #include "support/gettext.h"
 
 #include <ostream>
 
+using namespace std;
 
 namespace lyx {
 
 
 InsetHFill::InsetHFill()
-       : InsetCommand(InsetCommandParams(HFILL_CODE), std::string())
+       : InsetCommand(InsetCommandParams(HFILL_CODE), string())
 {}
 
 
-CommandInfo const * InsetHFill::findInfo(std::string const & /* cmdName */)
+CommandInfo const * InsetHFill::findInfo(string const & /* cmdName */)
 {
        static const char * const paramnames[] = {""};
        static const CommandInfo info = {0, paramnames, 0};
@@ -40,9 +46,24 @@ Inset * InsetHFill::clone() const
 
 void InsetHFill::metrics(MetricsInfo &, Dimension & dim) const
 {
-       dim.wid = 3;
-       dim.asc = 3;
-       dim.des = 3;
+       // The metrics for this inset are calculated externally in
+       // \c TextMetrics::computeRowMetrics. Those are dummy value:
+       dim = Dimension(10, 10, 10);
+}
+
+
+void InsetHFill::draw(PainterInfo & pi, int x, int y) const
+{
+       Dimension const dim = Inset::dimension(*pi.base.bv);
+       int const x0 = x + 1;
+       int const x1 = x + dim.wid - 2;
+       int const y0 = y + dim.des - 1;
+       int const y1 = y - dim.asc + 1;
+
+       pi.pain.line(x0, y1, x0, y0, Color_added_space);
+       pi.pain.line(x0, y, x1, y, Color_added_space,
+               frontend::Painter::line_onoffdash);
+       pi.pain.line(x1, y1, x1, y0, Color_added_space);
 }
 
 
@@ -68,7 +89,7 @@ int InsetHFill::docbook(Buffer const &, odocstream & os,
 }
 
 
-void InsetHFill::write(Buffer const &, std::ostream & os) const
+void InsetHFill::write(Buffer const &, ostream & os) const
 {
        os << "\n\\hfill\n";
 }