Browse code

Support more precision in coordinates (from xdot version 1.3).

José Fonseca authored on 05/11/2013 08:22:22
Showing 1 changed files

  • xdot.py index e927105..5937b94 100755
... ...
@@ -529,19 +529,19 @@ class XDotAttrParser:
529 529
             self.pos += 1
530 530
         return res
531 531
 
532
-    def read_number(self):
532
+    def read_int(self):
533 533
         return int(self.read_code())
534 534
 
535 535
     def read_float(self):
536 536
         return float(self.read_code())
537 537
 
538 538
     def read_point(self):
539
-        x = self.read_number()
540
-        y = self.read_number()
539
+        x = self.read_float()
540
+        y = self.read_float()
541 541
         return self.transform(x, y)
542 542
 
543 543
     def read_text(self):
544
-        num = self.read_number()
544
+        num = self.read_int()
545 545
         pos = self.buf.find("-", self.pos) + 1
546 546
         self.pos = pos + num
547 547
         res = self.buf[pos:self.pos]
... ...
@@ -550,7 +550,7 @@ class XDotAttrParser:
550 550
         return res
551 551
 
552 552
     def read_polygon(self):
553
-        n = self.read_number()
553
+        n = self.read_int()
554 554
         p = []
555 555
         for i in range(n):
556 556
             x, y = self.read_point()
... ...
@@ -637,19 +637,19 @@ class XDotAttrParser:
637 637
                 self.handle_font(size, name)
638 638
             elif op == "T":
639 639
                 x, y = s.read_point()
640
-                j = s.read_number()
641
-                w = s.read_number()
640
+                j = s.read_int()
641
+                w = s.read_float()
642 642
                 t = s.read_text()
643 643
                 self.handle_text(x, y, j, w, t)
644 644
             elif op == "E":
645 645
                 x0, y0 = s.read_point()
646
-                w = s.read_number()
647
-                h = s.read_number()
646
+                w = s.read_float()
647
+                h = s.read_float()
648 648
                 self.handle_ellipse(x0, y0, w, h, filled=True)
649 649
             elif op == "e":
650 650
                 x0, y0 = s.read_point()
651
-                w = s.read_number()
652
-                h = s.read_number()
651
+                w = s.read_float()
652
+                h = s.read_float()
653 653
                 self.handle_ellipse(x0, y0, w, h, filled=False)
654 654
             elif op == "L":
655 655
                 points = self.read_polygon()
... ...
@@ -668,8 +668,8 @@ class XDotAttrParser:
668 668
                 self.handle_polygon(points, filled=False)
669 669
             elif op == "I":
670 670
                 x0, y0 = s.read_point()
671
-                w = s.read_number()
672
-                h = s.read_number()
671
+                w = s.read_float()
672
+                h = s.read_float()
673 673
                 path = s.read_text()
674 674
                 self.handle_image(x0, y0, w, h, path)
675 675
             else: