From 9e44f5eecb65fcf9df550e689c870d67828b3e36 Mon Sep 17 00:00:00 2001 From: Peter Clifton Date: Sat, 22 Dec 2012 16:45:30 +0000 Subject: [PATCH] copy.c: Add mask_flags parameter to CopyElementLowLevel() This avoids us needing to unset ExtraFlags separately in buffer.c --- src/buffer.c | 21 +-------------------- src/copy.c | 12 ++++++------ src/copy.h | 3 +-- src/hid/gtk/gui-pinout-preview.c | 2 +- 4 files changed, 9 insertions(+), 29 deletions(-) diff --git a/src/buffer.c b/src/buffer.c index d31142053f..44b181c8cc 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -214,26 +214,7 @@ AddElementToBuffer (ElementType *Element) ElementType *element; element = GetElementMemory (Dest); - CopyElementLowLevel (Dest, element, Element, false, 0, 0); - CLEAR_FLAG (ExtraFlag, element); - if (ExtraFlag) - { - ELEMENTTEXT_LOOP (element); - { - CLEAR_FLAG (ExtraFlag, text); - } - END_LOOP; - PIN_LOOP (element); - { - CLEAR_FLAG (FOUNDFLAG | ExtraFlag, pin); - } - END_LOOP; - PAD_LOOP (element); - { - CLEAR_FLAG (FOUNDFLAG | ExtraFlag, pad); - } - END_LOOP; - } + CopyElementLowLevel (Dest, element, Element, false, 0, 0, FOUNDFLAG | ExtraFlag); return (element); } diff --git a/src/copy.c b/src/copy.c index 9d92ced053..a9be335ae4 100644 --- a/src/copy.c +++ b/src/copy.c @@ -116,7 +116,7 @@ CopyPolygonLowLevel (PolygonType *Dest, PolygonType *Src) ElementType * CopyElementLowLevel (DataType *Data, ElementType *Dest, ElementType *Src, bool uniqueName, Coord dx, - Coord dy) + Coord dy, int mask_flags) { int i; /* release old memory if necessary */ @@ -125,14 +125,14 @@ CopyElementLowLevel (DataType *Data, ElementType *Dest, /* both coordinates and flags are the same */ Dest = CreateNewElement (Data, Dest, &PCB->Font, - MaskFlags (Src->Flags, FOUNDFLAG), + MaskFlags (Src->Flags, mask_flags), DESCRIPTION_NAME (Src), NAMEONPCB_NAME (Src), VALUE_NAME (Src), DESCRIPTION_TEXT (Src).X + dx, DESCRIPTION_TEXT (Src).Y + dy, DESCRIPTION_TEXT (Src).Direction, DESCRIPTION_TEXT (Src).Scale, MaskFlags (DESCRIPTION_TEXT (Src).Flags, - FOUNDFLAG), uniqueName); + mask_flags), uniqueName); /* abort on error */ if (!Dest) @@ -149,7 +149,7 @@ CopyElementLowLevel (DataType *Data, ElementType *Dest, { CreateNewPin (Dest, pin->X + dx, pin->Y + dy, pin->Thickness, pin->Clearance, pin->Mask, pin->DrillingHole, - pin->Name, pin->Number, MaskFlags (pin->Flags, FOUNDFLAG)); + pin->Name, pin->Number, MaskFlags (pin->Flags, mask_flags)); } END_LOOP; PAD_LOOP (Src); @@ -157,7 +157,7 @@ CopyElementLowLevel (DataType *Data, ElementType *Dest, CreateNewPad (Dest, pad->Point1.X + dx, pad->Point1.Y + dy, pad->Point2.X + dx, pad->Point2.Y + dy, pad->Thickness, pad->Clearance, pad->Mask, pad->Name, pad->Number, - MaskFlags (pad->Flags, FOUNDFLAG)); + MaskFlags (pad->Flags, mask_flags)); } END_LOOP; ARC_LOOP (Src); @@ -294,7 +294,7 @@ CopyElement (ElementType *Element) NULL, Element, TEST_FLAG (UNIQUENAMEFLAG, PCB), DeltaX, - DeltaY); + DeltaY, FOUNDFLAG); /* this call clears the polygons */ AddObjectToCreateUndoList (ELEMENT_TYPE, element, element, element); diff --git a/src/copy.h b/src/copy.h index e9871fc39e..9c65f3232e 100644 --- a/src/copy.h +++ b/src/copy.h @@ -41,8 +41,7 @@ PolygonType * CopyPolygonLowLevel (PolygonType *, PolygonType *); -ElementType * CopyElementLowLevel (DataType *, ElementType *, - ElementType *, bool, Coord, Coord); +ElementType * CopyElementLowLevel (DataType *, ElementType *, ElementType *, bool, Coord, Coord, int mask_flags); bool CopyPastebufferToLayout (Coord, Coord); void *CopyObject (int, void *, void *, void *, Coord, Coord); diff --git a/src/hid/gtk/gui-pinout-preview.c b/src/hid/gtk/gui-pinout-preview.c index 3336945e18..d354ff15e1 100644 --- a/src/hid/gtk/gui-pinout-preview.c +++ b/src/hid/gtk/gui-pinout-preview.c @@ -80,7 +80,7 @@ pinout_set_data (GhidPinoutPreview * pinout, ElementType * element) * move element to a 5% offset from zero position * set all package lines/arcs to zero width */ - CopyElementLowLevel (NULL, &pinout->element, element, FALSE, 0, 0); + CopyElementLowLevel (NULL, &pinout->element, element, FALSE, 0, 0, FOUNDFLAG); PIN_LOOP (&pinout->element); { SET_FLAG (DISPLAYNAMEFLAG, pin); -- 2.11.4.GIT