Browse Source

fix alignment code

Cary Sandvig 25 years ago
parent
commit
b4053a4256
2 changed files with 25 additions and 12 deletions
  1. 16 8
      panda/src/gui/guiLabel.cxx
  2. 9 4
      panda/src/testbed/gui_demo.cxx

+ 16 - 8
panda/src/gui/guiLabel.cxx

@@ -158,14 +158,22 @@ void GuiLabel::get_extents(float& l, float& r, float& b, float& t) {
   case SIMPLE_TEXT:
     {
       TextNode* n = DCAST(TextNode, _geom);
-      LVector3f ul = n->get_upper_left_3d() - LPoint3f::origin();
-      LVector3f lr = n->get_lower_right_3d() - LPoint3f::origin();
-      LVector3f up = LVector3f::up();
-      LVector3f right = LVector3f::right();
-      l = ul.dot(right);
-      r = lr.dot(right);
-      b = lr.dot(up);
-      t = ul.dot(up);
+      if (n->has_card()) {
+	LVecBase4f v = n->get_card_transformed();
+	l = v[0];
+	r = v[1];
+	b = v[2];
+	t = v[3];
+      } else {
+	LVector3f ul = n->get_upper_left_3d() - LPoint3f::origin();
+	LVector3f lr = n->get_lower_right_3d() - LPoint3f::origin();
+	LVector3f up = LVector3f::up();
+	LVector3f right = LVector3f::right();
+	l = ul.dot(right);
+	r = lr.dot(right);
+	b = lr.dot(up);
+	t = ul.dot(up);
+      }
     }
     break;
   case SIMPLE_TEXTURE:

+ 9 - 4
panda/src/testbed/gui_demo.cxx

@@ -256,10 +256,14 @@ static void setup_gui(void) {
   GuiButton* b5 = new GuiButton("fox", b5l1, b5l2, b5l3, b5l3, b5l1);
   b5->set_scale(0.1);
   f1->add_item(b5);
-  f1->pack_item(b2, GuiFrame::UNDER, b1);
-  f1->pack_item(b3, GuiFrame::UNDER, b2);
-  f1->pack_item(b4, GuiFrame::UNDER, b3);
-  f1->pack_item(b5, GuiFrame::UNDER, b4);
+  f1->pack_item(b2, GuiFrame::UNDER, b1, 0.05);
+  f1->pack_item(b2, GuiFrame::ALIGN_LEFT, b1);
+  f1->pack_item(b3, GuiFrame::UNDER, b2, 0.05);
+  f1->pack_item(b3, GuiFrame::ALIGN_LEFT, b2);
+  f1->pack_item(b4, GuiFrame::UNDER, b3, 0.05);
+  f1->pack_item(b4, GuiFrame::ALIGN_LEFT, b3);
+  f1->pack_item(b5, GuiFrame::UNDER, b4, 0.05);
+  f1->pack_item(b5, GuiFrame::ALIGN_LEFT, b4);
   float w, w1, w2;
   w1 = b1l1->get_width();
   w2 = b2l1->get_width();
@@ -285,6 +289,7 @@ static void setup_gui(void) {
   b5l1->set_width(w);
   b5l2->set_width(w);
   b5l3->set_width(w);
+  f1->recompute();
   f1->manage(mgr, event_handler);
 }