Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kicad-source-mirror
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
kicad-source-mirror
Commits
ae459044
Commit
ae459044
authored
Mar 15, 2008
by
dickelbeck
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Patch originating from Jonas Diemer
parent
a1edf838
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
146 additions
and
93 deletions
+146
-93
block.cpp
eeschema/block.cpp
+7
-3
cmpclass.cpp
eeschema/cmpclass.cpp
+43
-1
component_class.cpp
eeschema/component_class.cpp
+2
-2
component_class.h
eeschema/component_class.h
+3
-2
program.h
eeschema/program.h
+2
-6
base_struct.h
include/base_struct.h
+87
-72
class_track.cpp
pcbnew/class_track.cpp
+1
-1
class_track.h
pcbnew/class_track.h
+1
-6
No files found.
eeschema/block.cpp
View file @
ae459044
...
...
@@ -962,13 +962,17 @@ void DeleteStruct( WinEDA_DrawPanel* panel, wxDC* DC, EDA_BaseStruct* DrawStruct
{
screen
->
RemoveFromDrawList
(
DrawStruct
);
if
(
DrawStruct
->
Type
()
==
DRAW_SEGMENT_STRUCT_TYPE
)
if
(
(
DrawStruct
->
Type
()
==
DRAW_SEGMENT_STRUCT_TYPE
)
||
(
DrawStruct
->
Type
()
==
DRAW_JUNCTION_STRUCT_TYPE
)
||
(
DrawStruct
->
Type
()
==
DRAW_LIB_ITEM_STRUCT_TYPE
)
)
{
D
(
printf
(
"PostDirtyRect()
\n
"
);
)
panel
->
PostDirtyRect
(
((
EDA_DrawLineStruct
*
)
DrawStruct
)
->
GetBoundingBox
()
);
panel
->
PostDirtyRect
(
DrawStruct
->
GetBoundingBox
()
);
}
else
{
D
(
DrawStruct
->
Show
(
0
,
std
::
cout
);
)
// tell me which classes still need GetBoundingBox support
RedrawOneStruct
(
panel
,
DC
,
DrawStruct
,
g_XorMode
);
}
/* Unlink the structure */
DrawStruct
->
Pnext
=
DrawStruct
->
Pback
=
NULL
;
// Only one struct -> no link
...
...
eeschema/cmpclass.cpp
View file @
ae459044
...
...
@@ -241,7 +241,7 @@ void EDA_DrawLineStruct::Show( int nestLevel, std::ostream& os )
EDA_Rect
EDA_DrawLineStruct
::
GetBoundingBox
()
const
EDA_Rect
EDA_DrawLineStruct
::
GetBoundingBox
()
{
int
width
=
25
;
...
...
@@ -257,7 +257,49 @@ EDA_Rect EDA_DrawLineStruct::GetBoundingBox() const
return
ret
;
}
EDA_Rect
DrawJunctionStruct
::
GetBoundingBox
()
{
int
width
=
DRAWJUNCTION_SIZE
*
2
;
int
xmin
=
m_Pos
.
x
-
DRAWJUNCTION_SIZE
;
int
ymin
=
m_Pos
.
y
-
DRAWJUNCTION_SIZE
;
EDA_Rect
ret
(
wxPoint
(
xmin
,
ymin
),
wxSize
(
width
,
width
)
);
return
ret
;
};
EDA_Rect
EDA_SchComponentStruct
::
GetBoundingBox
()
{
const
int
PADDING
=
40
;
int
xmin
,
xmax
,
ymin
,
ymax
;
// This gives a reasonable approximation (but some things are missing so...
EDA_Rect
ret
=
GetBoundaryBox
();
xmin
=
ret
.
m_Pos
.
x
;
ymin
=
ret
.
m_Pos
.
y
;
xmax
=
ret
.
m_Pos
.
x
+
ret
.
m_Size
.
x
;
ymax
=
ret
.
m_Pos
.
y
+
ret
.
m_Size
.
y
;
// Include BoundingBoxes of fields
for
(
int
i
=
REFERENCE
;
i
<
NUMBER_OF_FIELDS
;
i
++
)
{
EDA_Rect
box
=
m_Field
[
i
].
GetBoundaryBox
();
xmin
=
MIN
(
xmin
,
box
.
m_Pos
.
x
);
ymin
=
MIN
(
ymin
,
box
.
m_Pos
.
y
);
xmax
=
MAX
(
xmax
,
box
.
m_Pos
.
x
+
box
.
m_Size
.
x
);
ymax
=
MAX
(
ymax
,
box
.
m_Pos
.
y
+
box
.
m_Size
.
y
);
}
// ... add padding TODO: improve this
ret
.
m_Pos
.
x
=
xmin
-
PADDING
;
ret
.
m_Pos
.
y
=
ymin
-
PADDING
;
ret
.
m_Size
.
x
=
xmax
-
xmin
+
2
*
PADDING
;
ret
.
m_Size
.
y
=
ymax
-
ymin
+
2
*
PADDING
;
D
(
printf
(
"final box: %d,%d, %d,%d
\n
"
,
ret
.
m_Pos
.
x
,
ret
.
m_Pos
.
y
,
ret
.
m_Size
.
x
,
ret
.
m_Size
.
y
);
)
return
ret
;
}
/****************************/
/* Class DrawPolylineStruct */
...
...
eeschema/component_class.cpp
View file @
ae459044
...
...
@@ -234,7 +234,7 @@ EDA_SchComponentStruct::EDA_SchComponentStruct( const wxPoint& pos ) :
/************************************************/
EDA_Rect
EDA_SchComponentStruct
::
GetBoundaryBox
()
EDA_Rect
EDA_SchComponentStruct
::
GetBoundaryBox
()
const
/************************************************/
{
EDA_LibComponentStruct
*
Entry
=
FindLibPart
(
m_ChipName
.
GetData
(),
wxEmptyString
,
FIND_ROOT
);
...
...
@@ -733,7 +733,7 @@ bool PartTextStruct::IsVoid()
/********************************************/
EDA_Rect
PartTextStruct
::
GetBoundaryBox
()
EDA_Rect
PartTextStruct
::
GetBoundaryBox
()
const
/********************************************/
/* return
...
...
eeschema/component_class.h
View file @
ae459044
...
...
@@ -59,7 +59,7 @@ public:
void
PartTextCopy
(
PartTextStruct
*
target
);
void
Place
(
WinEDA_DrawFrame
*
frame
,
wxDC
*
DC
);
EDA_Rect
GetBoundaryBox
();
EDA_Rect
GetBoundaryBox
()
const
;
bool
IsVoid
();
void
SwapData
(
PartTextStruct
*
copyitem
);
};
...
...
@@ -123,7 +123,8 @@ public:
wxPoint
GetScreenCoord
(
const
wxPoint
&
coord
);
void
Display_Infos
(
WinEDA_DrawFrame
*
frame
);
void
ClearAnnotation
();
EDA_Rect
GetBoundaryBox
();
EDA_Rect
GetBoundaryBox
()
const
;
EDA_Rect
GetBoundingBox
();
const
wxString
&
ReturnFieldName
(
int
aFieldNdx
)
const
;
...
...
eeschema/program.h
View file @
ae459044
...
...
@@ -91,12 +91,7 @@ public:
return
m_Start
==
m_End
;
}
/**
* Function GetBoundingBox
* returns the bounding box of this TRACK
*/
EDA_Rect
GetBoundingBox
()
const
;
EDA_Rect
GetBoundingBox
();
virtual
void
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
const
wxPoint
&
offset
,
int
draw_mode
,
int
Color
=
-
1
);
...
...
@@ -234,6 +229,7 @@ public:
return
wxT
(
"DrawJunction"
);
}
EDA_Rect
GetBoundingBox
();
DrawJunctionStruct
*
GenCopy
();
virtual
void
Draw
(
WinEDA_DrawPanel
*
panel
,
wxDC
*
DC
,
const
wxPoint
&
offset
,
...
...
include/base_struct.h
View file @
ae459044
...
...
@@ -125,6 +125,78 @@ public:
};
/**
* Class EDA_Rect
* handles the component boundary box.
* This class is similar to wxRect, but some wxRect functions are very curious,
* so I prefer this suitable class
*/
class
EDA_Rect
{
public
:
wxPoint
m_Pos
;
// Rectangle Origin
wxSize
m_Size
;
// Rectangle Size
public
:
EDA_Rect
()
{
};
EDA_Rect
(
const
wxPoint
&
aPos
,
const
wxSize
&
aSize
)
:
m_Pos
(
aPos
),
m_Size
(
aSize
)
{}
wxPoint
Centre
()
{
return
wxPoint
(
m_Pos
.
x
+
(
m_Size
.
x
>>
1
),
m_Pos
.
y
+
(
m_Size
.
y
>>
1
)
);
}
void
Normalize
();
// Ensure the height and width are >= 0
bool
Inside
(
const
wxPoint
&
point
);
// Return TRUE if point is in Rect
bool
Inside
(
int
x
,
int
y
)
{
return
Inside
(
wxPoint
(
x
,
y
)
);
}
wxSize
GetSize
()
{
return
m_Size
;
}
int
GetX
()
{
return
m_Pos
.
x
;
}
int
GetY
()
{
return
m_Pos
.
y
;
}
wxPoint
GetOrigin
()
{
return
m_Pos
;
}
wxPoint
GetPosition
()
{
return
m_Pos
;
}
wxPoint
GetEnd
()
{
return
wxPoint
(
GetRight
(),
GetBottom
()
);
}
int
GetWidth
()
{
return
m_Size
.
x
;
}
int
GetHeight
()
{
return
m_Size
.
y
;
}
int
GetRight
()
{
return
m_Pos
.
x
+
m_Size
.
x
;
}
int
GetBottom
()
{
return
m_Pos
.
y
+
m_Size
.
y
;
}
void
SetOrigin
(
const
wxPoint
&
pos
)
{
m_Pos
=
pos
;
}
void
SetOrigin
(
int
x
,
int
y
)
{
m_Pos
.
x
=
x
;
m_Pos
.
y
=
y
;
}
void
SetSize
(
const
wxSize
&
size
)
{
m_Size
=
size
;
}
void
SetSize
(
int
w
,
int
h
)
{
m_Size
.
x
=
w
;
m_Size
.
y
=
h
;
}
void
Offset
(
int
dx
,
int
dy
)
{
m_Pos
.
x
+=
dx
;
m_Pos
.
y
+=
dy
;
}
void
Offset
(
const
wxPoint
&
offset
)
{
m_Pos
.
x
+=
offset
.
x
;
m_Pos
.
y
+=
offset
.
y
;
}
void
SetX
(
int
val
)
{
m_Pos
.
x
=
val
;
}
void
SetY
(
int
val
)
{
m_Pos
.
y
=
val
;
}
void
SetWidth
(
int
val
)
{
m_Size
.
x
=
val
;
}
void
SetHeight
(
int
val
)
{
m_Size
.
y
=
val
;
}
void
SetEnd
(
const
wxPoint
&
pos
)
{
m_Size
.
x
=
pos
.
x
-
m_Pos
.
x
;
m_Size
.
y
=
pos
.
y
-
m_Pos
.
y
;
}
/**
* Function Intersects
* @return bool - true if the argument rectangle intersects this rectangle.
*/
bool
Intersects
(
const
EDA_Rect
aRect
)
const
;
/**
* Function operator(wxRect)
* overloads the cast operator to return a wxRect
*/
operator
wxRect
()
const
{
return
wxRect
(
m_Pos
,
m_Size
);
}
EDA_Rect
&
Inflate
(
wxCoord
dx
,
wxCoord
dy
);
};
/********************************************************************/
/* Classes de base: servent a deriver les classes reellement utiles */
/********************************************************************/
...
...
@@ -268,6 +340,19 @@ public:
return
false
;
// derived classes should override this function
}
/**
* Function GetBoundingBox
* returns the orthogonal, bounding box of this object for display purposes.
* This box should be an enclosing perimeter for visible components of this
* object, and the units should be in the pcb or schematic coordinate system.
* It is OK to overestimate the size by a few counts.
*/
virtual
EDA_Rect
GetBoundingBox
()
{
// return a zero-sized box per default. derived classes should override this
EDA_Rect
ret
(
wxPoint
(
0
,
0
),
wxSize
(
0
,
0
)
);
return
ret
;
}
/**
* Function IterateForward
...
...
@@ -414,7 +499,7 @@ public:
virtual
~
EDA_TextStruct
();
void
CreateDrawData
();
int
GetLength
()
{
return
m_Text
.
Length
();
};
int
GetLength
()
const
{
return
m_Text
.
Length
();
};
/** Function Pitch()
* @return distance between 2 caracteres
...
...
@@ -600,74 +685,4 @@ public:
DrawPickedStruct
*
Next
()
{
return
(
DrawPickedStruct
*
)
Pnext
;
}
};
/**
* Class EDA_Rect
* handles the component boundary box.
* This class is similar to wxRect, but some wxRect functions are very curious,
* so I prefer this suitable class
*/
class
EDA_Rect
{
public
:
wxPoint
m_Pos
;
// Rectangle Origin
wxSize
m_Size
;
// Rectangle Size
public
:
EDA_Rect
()
{
};
EDA_Rect
(
const
wxPoint
&
aPos
,
const
wxSize
&
aSize
)
:
m_Pos
(
aPos
),
m_Size
(
aSize
)
{}
wxPoint
Centre
()
{
return
wxPoint
(
m_Pos
.
x
+
(
m_Size
.
x
>>
1
),
m_Pos
.
y
+
(
m_Size
.
y
>>
1
)
);
}
void
Normalize
();
// Ensure the height and width are >= 0
bool
Inside
(
const
wxPoint
&
point
);
// Return TRUE if point is in Rect
bool
Inside
(
int
x
,
int
y
)
{
return
Inside
(
wxPoint
(
x
,
y
)
);
}
wxSize
GetSize
()
{
return
m_Size
;
}
int
GetX
()
{
return
m_Pos
.
x
;
}
int
GetY
()
{
return
m_Pos
.
y
;
}
wxPoint
GetOrigin
()
{
return
m_Pos
;
}
wxPoint
GetPosition
()
{
return
m_Pos
;
}
wxPoint
GetEnd
()
{
return
wxPoint
(
GetRight
(),
GetBottom
()
);
}
int
GetWidth
()
{
return
m_Size
.
x
;
}
int
GetHeight
()
{
return
m_Size
.
y
;
}
int
GetRight
()
{
return
m_Pos
.
x
+
m_Size
.
x
;
}
int
GetBottom
()
{
return
m_Pos
.
y
+
m_Size
.
y
;
}
void
SetOrigin
(
const
wxPoint
&
pos
)
{
m_Pos
=
pos
;
}
void
SetOrigin
(
int
x
,
int
y
)
{
m_Pos
.
x
=
x
;
m_Pos
.
y
=
y
;
}
void
SetSize
(
const
wxSize
&
size
)
{
m_Size
=
size
;
}
void
SetSize
(
int
w
,
int
h
)
{
m_Size
.
x
=
w
;
m_Size
.
y
=
h
;
}
void
Offset
(
int
dx
,
int
dy
)
{
m_Pos
.
x
+=
dx
;
m_Pos
.
y
+=
dy
;
}
void
Offset
(
const
wxPoint
&
offset
)
{
m_Pos
.
x
+=
offset
.
x
;
m_Pos
.
y
+=
offset
.
y
;
}
void
SetX
(
int
val
)
{
m_Pos
.
x
=
val
;
}
void
SetY
(
int
val
)
{
m_Pos
.
y
=
val
;
}
void
SetWidth
(
int
val
)
{
m_Size
.
x
=
val
;
}
void
SetHeight
(
int
val
)
{
m_Size
.
y
=
val
;
}
void
SetEnd
(
const
wxPoint
&
pos
)
{
m_Size
.
x
=
pos
.
x
-
m_Pos
.
x
;
m_Size
.
y
=
pos
.
y
-
m_Pos
.
y
;
}
/**
* Function Intersects
* @return bool - true if the argument rectangle intersects this rectangle.
*/
bool
Intersects
(
const
EDA_Rect
aRect
)
const
;
/**
* Function operator(wxRect)
* overloads the cast operator to return a wxRect
*/
operator
wxRect
()
const
{
return
wxRect
(
m_Pos
,
m_Size
);
}
EDA_Rect
&
Inflate
(
wxCoord
dx
,
wxCoord
dy
);
};
#endif
/* BASE_STRUCT_H */
pcbnew/class_track.cpp
View file @
ae459044
...
...
@@ -219,7 +219,7 @@ int TRACK::IsPointOnEnds( const wxPoint& point, int min_dist )
}
EDA_Rect
TRACK
::
GetBoundingBox
()
const
EDA_Rect
TRACK
::
GetBoundingBox
()
{
// end of track is round, this is its radius, rounded up
int
radius
=
(
m_Width
+
1
)
/
2
;
...
...
pcbnew/class_track.h
View file @
ae459044
...
...
@@ -67,12 +67,7 @@ public:
return
m_Start
;
// it had to be start or end.
}
/**
* Function GetBoundingBox
* returns the bounding box of this TRACK
*/
EDA_Rect
GetBoundingBox
()
const
;
EDA_Rect
GetBoundingBox
();
/* supprime du chainage la structure Struct */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment