Index: draw.c
===================================================================
RCS file: /cvsroot/pcb/pcb/src/draw.c,v
retrieving revision 1.51
diff -p -U2 -r1.51 draw.c
--- draw.c      19 Apr 2006 22:36:46 -0000      1.51
+++ draw.c      14 May 2006 02:06:25 -0000
@@ -423,5 +423,5 @@ static void
 DrawEverything (BoxTypePtr drawn_area)
 {
-  int i, ngroups;
+  int i, ngroups, side;
   int component, solder;
   /* This is the list of layer groups we will draw.  */
@@ -542,4 +542,40 @@ DrawEverything (BoxTypePtr drawn_area)
     }
 
+  for (side=0; side<=1; side++)
+    {
+      int doit;
+      Boolean NoData = True;
+      ALLPAD_LOOP (PCB->Data);
+      {
+       if ((TEST_FLAG (ONSOLDERFLAG, pad) && side == SOLDER_LAYER)
+           || (!TEST_FLAG (ONSOLDERFLAG, pad) && side == COMPONENT_LAYER))
+          {
+            NoData = False;
+            break;
+          }
+      }
+      ENDALL_LOOP;
+
+      /* skip empty files */
+      if (NoData)
+        continue;
+
+      if (side == SOLDER_LAYER)
+       doit = gui->set_layer ("bottompaste", SL(PASTE, BOTTOM));
+      else
+       doit = gui->set_layer ("toppaste", SL(PASTE, TOP));
+      if (doit)
+       {
+         gui->set_color (Output.fgGC, PCB->ElementColor);
+         ALLPAD_LOOP (PCB->Data);
+         {
+           if ((TEST_FLAG (ONSOLDERFLAG, pad) && side == SOLDER_LAYER)
+               || (!TEST_FLAG (ONSOLDERFLAG, pad) && side == COMPONENT_LAYER))
+             DrawPadLowLevel (pad);
+         }
+         ENDALL_LOOP;
+       }
+    }
+
   doing_assy = True;
   if (gui->set_layer ("topassembly", SL (ASSY, TOP)))

Reply via email to