--- a/graphics/LD_Objects.py Wed Jun 04 17:48:26 2008 +0200
+++ b/graphics/LD_Objects.py Mon Jun 23 18:48:49 2008 +0200
@@ -563,13 +563,8 @@
Graphic_Element.Draw(self, dc)
dc.SetPen(wx.BLACK_PEN)
dc.SetBrush(wx.BLACK_BRUSH)
- # Draw two rectangles for representing the contact
- dc.DrawRectangle(self.Pos.x, self.Pos.y, 2, self.Size[1] + 1)
- dc.DrawRectangle(self.Pos.x + self.Size[0] - 1, self.Pos.y, 2, self.Size[1] + 1)
- # Draw contact name
- dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2,
- self.Pos.y - (self.NameSize[1] + 2))
- # Draw the modifier symbol in the middle of contact
+
+ # Compiling contact type modifier symbol
typetext = ""
if self.Type == CONTACT_REVERSE:
typetext = "/"
@@ -577,9 +572,26 @@
typetext = "P"
elif self.Type == CONTACT_FALLING:
typetext = "N"
+
+ if getattr(dc, "printing", False):
+ name_size = dc.GetTextExtent(self.Name)
+ if typetext != "":
+ type_size = dc.GetTextExtent(typetext)
+ else:
+ name_size = self.NameSize
+ if typetext != "":
+ type_size = self.TypeSize
+
+ # Draw two rectangles for representing the contact
+ dc.DrawRectangle(self.Pos.x, self.Pos.y, 2, self.Size[1] + 1)
+ dc.DrawRectangle(self.Pos.x + self.Size[0] - 1, self.Pos.y, 2, self.Size[1] + 1)
+ # Draw contact name
+ dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2,
+ self.Pos.y - (name_size[1] + 2))
+ # Draw the modifier symbol in the middle of contact
if typetext != "":
- dc.DrawText(typetext, self.Pos.x + (self.Size[0] - self.TypeSize[0]) / 2 + 1,
- self.Pos.y + (self.Size[1] - self.TypeSize[1]) / 2)
+ dc.DrawText(typetext, self.Pos.x + (self.Size[0] - type_size[0]) / 2 + 1,
+ self.Pos.y + (self.Size[1] - type_size[1]) / 2)
# Draw input and output connectors
self.Input.Draw(dc)
self.Output.Draw(dc)
@@ -793,15 +805,8 @@
Graphic_Element.Draw(self, dc)
dc.SetPen(wx.Pen(wx.BLACK, 2, wx.SOLID))
dc.SetBrush(wx.TRANSPARENT_BRUSH)
- # Draw a two circle arcs for representing the coil
- dc.DrawEllipticArc(self.Pos.x, self.Pos.y - int(self.Size[1] * (sqrt(2) - 1.) / 2.) + 1, self.Size[0], int(self.Size[1] * sqrt(2)) - 1, 135, 225)
- dc.DrawEllipticArc(self.Pos.x, self.Pos.y - int(self.Size[1] * (sqrt(2) - 1.) / 2.) + 1, self.Size[0], int(self.Size[1] * sqrt(2)) - 1, -45, 45)
- dc.SetPen(wx.BLACK_PEN)
- dc.DrawPoint(self.Pos.x + 1, self.Pos.y + self.Size[1] / 2 + 1)
- # Draw coil name
- dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - self.NameSize[0]) / 2,
- self.Pos.y - (self.NameSize[1] + 2))
- # Draw the modifier symbol in the middle of coil
+
+ # Compiling coil type modifier symbol
typetext = ""
if self.Type == COIL_REVERSE:
typetext = "/"
@@ -809,9 +814,37 @@
typetext = "S"
elif self.Type == COIL_RESET:
typetext = "R"
+
+ if getattr(dc, "printing", False) and not isinstance(dc, wx.PostScriptDC):
+ # Draw an clipped ellipse for representing the coil
+ clipping_box = dc.GetClippingBox()
+ dc.SetClippingRegion(self.Pos.x - 1, self.Pos.y, self.Size[0] + 2, self.Size[1] + 1)
+ dc.DrawEllipse(self.Pos.x, self.Pos.y - int(self.Size[1] * (sqrt(2) - 1.) / 2.) + 1, self.Size[0], int(self.Size[1] * sqrt(2)) - 1)
+ dc.DestroyClippingRegion()
+ if clipping_box != (0, 0, 0, 0):
+ dc.SetClippingRegion(*clipping_box)
+ name_size = dc.GetTextExtent(self.Name)
+ if typetext != "":
+ type_size = dc.GetTextExtent(typetext)
+ else:
+ # Draw a two ellipse arcs for representing the coil
+ dc.DrawEllipticArc(self.Pos.x, self.Pos.y - int(self.Size[1] * (sqrt(2) - 1.) / 2.) + 1, self.Size[0], int(self.Size[1] * sqrt(2)) - 1, 135, 225)
+ dc.DrawEllipticArc(self.Pos.x, self.Pos.y - int(self.Size[1] * (sqrt(2) - 1.) / 2.) + 1, self.Size[0], int(self.Size[1] * sqrt(2)) - 1, -45, 45)
+ # Draw a point to avoid hole in left arc
+ if not getattr(dc, "printing", False):
+ dc.SetPen(wx.BLACK_PEN)
+ dc.DrawPoint(self.Pos.x + 1, self.Pos.y + self.Size[1] / 2 + 1)
+ name_size = self.NameSize
+ if typetext != "":
+ type_size = self.TypeSize
+
+ # Draw coil name
+ dc.DrawText(self.Name, self.Pos.x + (self.Size[0] - name_size[0]) / 2,
+ self.Pos.y - (name_size[1] + 2))
+ # Draw the modifier symbol in the middle of coil
if typetext != "":
- dc.DrawText(typetext, self.Pos.x + (self.Size[0] - self.TypeSize[0]) / 2 + 1,
- self.Pos.y + (self.Size[1] - self.TypeSize[1]) / 2)
+ dc.DrawText(typetext, self.Pos.x + (self.Size[0] - type_size[0]) / 2 + 1,
+ self.Pos.y + (self.Size[1] - type_size[1]) / 2)
# Draw input and output connectors
self.Input.Draw(dc)
self.Output.Draw(dc)