📄 diagramentity.cpp
字号:
"DEHT_TOPRIGHT" Top-right corner
"DEHT_BOTTOMLEFT" Bottom-left corner
"DEHT_BOTTOMMIDDLE" Middle bottom-side
"DEHT_BOTTOMRIGHT" Bottom-right corner
"DEHT_LEFTMIDDLE" Middle left-side
"DEHT_RIGHTMIDDLE" Middle right-side
============================================================*/
{
HCURSOR cursor = NULL;
switch( hit )
{
case DEHT_BODY:
cursor = LoadCursor( NULL, IDC_SIZEALL );
break;
case DEHT_TOPLEFT:
cursor = LoadCursor( NULL, IDC_SIZENWSE );
break;
case DEHT_TOPMIDDLE:
cursor = LoadCursor( NULL, IDC_SIZENS );
break;
case DEHT_TOPRIGHT:
cursor = LoadCursor( NULL, IDC_SIZENESW );
break;
case DEHT_BOTTOMLEFT:
cursor = LoadCursor( NULL, IDC_SIZENESW );
break;
case DEHT_BOTTOMMIDDLE:
cursor = LoadCursor( NULL, IDC_SIZENS );
break;
case DEHT_BOTTOMRIGHT:
cursor = LoadCursor( NULL, IDC_SIZENWSE );
break;
case DEHT_LEFTMIDDLE:
cursor = LoadCursor( NULL, IDC_SIZEWE );
break;
case DEHT_RIGHTMIDDLE:
cursor = LoadCursor( NULL, IDC_SIZEWE );
break;
}
return cursor;
}
void CDiagramEntity::DrawSelectionMarkers( CDC* dc, CRect rect ) const
/* ============================================================
Function : CDiagramEntity::DrawSelectionMarkers
Description : Draws the selection markers for the
object.
Access : Protected
Return : void
Parameters : CDC* dc - The "CDC" to draw to
CRect rect - The real object rectangle.
Usage : "rect" is the true rectangle (zoomed) of the
object.
============================================================*/
{
// Draw selection markers
CRect rectSelect;
dc->SelectStockObject( BLACK_BRUSH );
rectSelect = GetSelectionMarkerRect( DEHT_TOPLEFT, rect );
dc->Rectangle( rectSelect );
rectSelect = GetSelectionMarkerRect( DEHT_TOPMIDDLE, rect );
dc->Rectangle( rectSelect );
rectSelect = GetSelectionMarkerRect( DEHT_TOPRIGHT, rect );
dc->Rectangle( rectSelect );
rectSelect = GetSelectionMarkerRect( DEHT_BOTTOMLEFT, rect );
dc->Rectangle( rectSelect );
rectSelect = GetSelectionMarkerRect( DEHT_BOTTOMMIDDLE, rect );
dc->Rectangle( rectSelect );
rectSelect = GetSelectionMarkerRect( DEHT_BOTTOMRIGHT, rect );
dc->Rectangle( rectSelect );
rectSelect = GetSelectionMarkerRect( DEHT_RIGHTMIDDLE, rect );
dc->Rectangle( rectSelect );
rectSelect = GetSelectionMarkerRect( DEHT_LEFTMIDDLE, rect );
dc->Rectangle( rectSelect );
}
CRect CDiagramEntity::GetSelectionMarkerRect( UINT marker, CRect rect ) const
/* ============================================================
Function : CDiagramEntity::GetSelectionMarkerRect
Description : Gets the selection marker rectangle for
marker, given the true object rectangle
"rect".
Access : Protected
Return : CRect - The marker rectangle
Parameters : UINT marker - The marker type ("DEHT_"-
constants defined in
DiargramEntity.h)
CRect rect - The object rectangle
Usage : "marker" can be one of the following:
"DEHT_NONE" No hit-point
"DEHT_BODY" Inside object body
"DEHT_TOPLEFT" Top-left corner
"DEHT_TOPMIDDLE" Middle top-side
"DEHT_TOPRIGHT" Top-right corner
"DEHT_BOTTOMLEFT" Bottom-left corner
"DEHT_BOTTOMMIDDLE" Middle bottom-side
"DEHT_BOTTOMRIGHT" Bottom-right corner
"DEHT_LEFTMIDDLE" Middle left-side
"DEHT_RIGHTMIDDLE" Middle right-side
============================================================*/
{
CRect rectMarker;
int horz = m_markerSize.cx / 2;
int vert = m_markerSize.cy / 2;
switch( marker )
{
case DEHT_TOPLEFT:
rectMarker.SetRect( rect.left - horz,
rect.top - vert,
rect.left + horz,
rect.top + vert );
break;
case DEHT_TOPMIDDLE:
rectMarker.SetRect( rect.left + ( rect.Width() / 2 ) - horz,
rect.top - vert,
rect.left + ( rect.Width() / 2 ) + horz,
rect.top + vert );
break;
case DEHT_TOPRIGHT:
rectMarker.SetRect( rect.right - horz,
rect.top - vert,
rect.right + horz,
rect.top + vert );
break;
case DEHT_BOTTOMLEFT:
rectMarker.SetRect( rect.left - horz,
rect.bottom - vert,
rect.left + horz,
rect.bottom + vert );
break;
case DEHT_BOTTOMMIDDLE:
rectMarker.SetRect( rect.left + ( rect.Width() / 2 ) - horz,
rect.bottom - vert,
rect.left + ( rect.Width() / 2 ) + horz,
rect.bottom + vert );
break;
case DEHT_BOTTOMRIGHT:
rectMarker.SetRect( rect.right - horz,
rect.bottom - vert,
rect.right + horz,
rect.bottom + vert );
break;
case DEHT_LEFTMIDDLE:
rectMarker.SetRect( rect.left - horz,
rect.top + ( rect.Height() / 2 ) - vert,
rect.left + horz,
rect.top + ( rect.Height() / 2 ) + vert );
break;
case DEHT_RIGHTMIDDLE:
rectMarker.SetRect( rect.right - horz,
rect.top + ( rect.Height() / 2 ) - vert,
rect.right + horz,
rect.top + ( rect.Height() / 2 ) + vert );
break;
}
return rectMarker;
}
void CDiagramEntity::SetParent( CDiagramEntityContainer * parent )
/* ============================================================
Function : CDiagramEntity::SetParent
Description : Set the container owning the object.
Access : Protected
Return : void
Parameters : CDiagramEntityContainer * parent - the
parent.
Usage : Call to set the parent of the object.
Objects must know their parent, to allow
copying etc.
============================================================*/
{
m_parent = parent;
}
void CDiagramEntity::GetFont( LOGFONT& lf ) const
/* ============================================================
Function : CDiagramEntity::GetFont
Description : Returns the system GUI font in a "LOGFONT"
scaled to the zoom level of the object.
Access : Protected
Return : void
Parameters : LOGFONT& lf - The "LOGFONT" for the system
GUI font.
Usage : Call to get the system font. Note that MS
Sans Serif will not scale below 8 points.
============================================================*/
{
HFONT hfont = ( HFONT ) ::GetStockObject( DEFAULT_GUI_FONT );
CFont* font = CFont::FromHandle( hfont );
font->GetLogFont( &lf );
lf.lfHeight = round( static_cast< double >( lf.lfHeight ) * m_zoom );
}
CString CDiagramEntity::GetType() const
/* ============================================================
Function : CDiagramEntity::GetType
Description : Returns the object type.
Access : Public
Return : CString - The type of the object.
Parameters : none
Usage : Call to get the type of the object. The type
is used when saving and loading objects
to/from a text file.
============================================================*/
{
return m_type;
}
void CDiagramEntity::SetType( CString type )
/* ============================================================
Function : CDiagramEntity::SetType
Description : Set the object type.
Access : Public
Return : void
Parameters : CString type - The type to set
Usage : Call to set the object type - normally in
the "ctor" of this object. The type is used
when saving and loading objects to/from a
text file.
============================================================*/
{
m_type = type;
}
CString CDiagramEntity::GetTitle() const
/* ============================================================
Function : CDiagramEntity::GetTitle
Description : Gets the Title property
Access : Public
Return : CString - The current title
Parameters : none
Usage : Call to get the title of the object. Title
is a property that the object can use in
whatever way it wants.
============================================================*/
{
return m_title;
}
void CDiagramEntity::SetTitle( CString title )
/* ============================================================
Function : CDiagramEntity::SetTitle
Description : Sets the Title property
Access : Public
Return : void
Parameters : CString title - The new title
Usage : Call to set the title of the object. Title
is a property that the object can use in
whatever way it wants.
============================================================*/
{
m_title = title;
}
CString CDiagramEntity::GetName() const
/* ============================================================
Function : CDiagramEntity::GetName
Description : Gets the Name property
Access : Public
Return : CString - The current name
Parameters : none
Usage : Call to get the name of the object. Name is
a property that the object can use in
whatever way it wants.
============================================================*/
{
return m_name;
}
void CDiagramEntity::SetName( CString name )
/* ============================================================
Function : CDiagramEntity::SetName
Description : Sets the Name property
Access : Public
Return : void
Parameters : CString name - The new name
Usage : Call to set the name of the object. Name is
a property that the object can use in
whatever way it wants.
============================================================*/
{
m_name = name;
}
double CDiagramEntity::GetLeft() const
/* ============================================================
Function : CDiagramEntity::GetLeft
Description : Gets the left edge of the object rectangle
Access : Public
Return : double - Left position
Parameters : none
Usage : Call to get the left edge of the object.
Note that if minimum sizes are not set for
the object, the left edge might be bigger
than the right.
The object coordinates are expressed as
double values to allow unlimited zoom.
============================================================*/
{
return m_left;
}
double CDiagramEntity::GetRight() const
/* ============================================================
Function : CDiagramEntity::GetRight
Description : Gets the right edge of the object
rectangle
Access : Public
Return : double - Right position
Parameters : none
Usage : Call to get the right edge of the object.
Note that if minimum sizes are not set for
the object, the left edge might be bigger
than the right.
The object coordinates are expressed as
double values to allow unlimited zoom.
============================================================*/
{
return m_right;
}
double CDiagramEntity::GetTop() const
/* ============================================================
Function : CDiagramEntity::GetTop
Description : Gets the top edge of the object rectangle
Access : Public
Return : double - Top position
Parameters : none
Usage : Call to get the top edge of the object.
Note that if minimum sizes are not set for
the object, the top edge might be bigger
than the bottom.
The object coordinates are expressed as
double values to allow unlimited zoom.
============================================================*/
{
return m_top;
}
double CDiagramEntity::GetBottom() const
/* ============================================================
Function : CDiagramEntity::GetBottom
Description : Gets the bottom edge of the object
rectangle
Access : Public
Return : double - Bottom postion
Parameters : none
Usage : Call to get the bottom edge of the object.
Note that if minimum sizes are not set for
the object, the top edge might be bigger
than the bottom.
The object coordinates are expressed as
double values to allow unlimited zoom.
============================================================*/
{
return m_bottom;
}
void CDiagramEntity::SetLeft( double left )
/* ============================================================
Function : CDiagramEntity::SetLeft
Description : Sets the left edge of the object rectangle
Access : Public
Return : void
Parameters : double left - New left position
Usage : Call to set the left edge of the object.
The object coordinates are expressed as
double values to allow unlimited zoom.
============================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -