Code

r11516@tres: ted | 2006-04-26 21:30:18 -0700
[inkscape.git] / src / sp-flowtext.cpp
index 3f70f53cec89ffee730d345a6b89c9d59945b58d..a161239017fa0e70218c1132294933558b5a8cff 100644 (file)
@@ -311,6 +311,21 @@ sp_flowtext_bbox(SPItem const *item, NRRect *bbox, NR::Matrix const &transform,
 {
     SPFlowtext *group = SP_FLOWTEXT(item);
     group->layout.getBoundingBox(bbox, transform);
+
+    // Add stroke width
+    SPStyle* style=SP_OBJECT_STYLE (item);
+    if (style->stroke.type != SP_PAINT_TYPE_NONE) {
+        double const scale = expansion(transform);
+        if ( fabs(style->stroke_width.computed * scale) > 0.01 ) { // sinon c'est 0=oon veut pas de bord
+            double const width = MAX(0.125, style->stroke_width.computed * scale);
+            if ( fabs(bbox->x1 - bbox->x0) > -0.00001 && fabs(bbox->y1 - bbox->y0) > -0.00001 ) {
+                bbox->x0-=0.5*width;
+                bbox->x1+=0.5*width;
+                bbox->y0-=0.5*width;
+                bbox->y1+=0.5*width;
+            }
+        }
+    }
 }
 
 static void
@@ -487,7 +502,7 @@ void SPFlowtext::_clearFlow(NRArenaGroup *in_arena)
 void SPFlowtext::convert_to_text()
 {
     SPDesktop *desktop = SP_ACTIVE_DESKTOP;
-    Inkscape::Selection *selection = SP_DT_SELECTION(desktop);
+    Inkscape::Selection *selection = sp_desktop_selection(desktop);
     SPItem *item = selection->singleItem();
     if (!SP_IS_FLOWTEXT(item)) return;
 
@@ -586,7 +601,7 @@ void SPFlowtext::convert_to_text()
 
     Inkscape::XML::Node *parent = SP_OBJECT_REPR(item)->parent();
     parent->appendChild(repr);
-    SPItem *new_item = (SPItem *) SP_DT_DOCUMENT(desktop)->getObjectByRepr(repr);
+    SPItem *new_item = (SPItem *) sp_desktop_document(desktop)->getObjectByRepr(repr);
     sp_item_write_transform(new_item, repr, item->transform);
     SP_OBJECT(new_item)->updateRepr();
 
@@ -594,7 +609,7 @@ void SPFlowtext::convert_to_text()
     selection->set(new_item);
     item->deleteObject();
 
-    sp_document_done(SP_DT_DOCUMENT(desktop));
+    sp_document_done(sp_desktop_document(desktop));
 }
 
 SPItem *SPFlowtext::get_frame(SPItem *after)
@@ -645,7 +660,7 @@ bool SPFlowtext::has_internal_frame()
 
 SPItem *create_flowtext_with_internal_frame (SPDesktop *desktop, NR::Point p0, NR::Point p1)
 {
-    SPDocument *doc = SP_DT_DOCUMENT (desktop);
+    SPDocument *doc = sp_desktop_document (desktop);
 
     Inkscape::XML::Node *root_repr = sp_repr_new("svg:flowRoot");
     root_repr->setAttribute("xml:space", "preserve"); // we preserve spaces in the text objects we create