Get rid of PageLayout globals so drawing the preview doesn't mess up the document.
This commit is contained in:
parent
bdd44ce88c
commit
248089c934
|
@ -238,6 +238,7 @@ set( COMMON_WIDGET_SRCS
|
|||
set( COMMON_PAGE_LAYOUT_SRCS
|
||||
page_layout/ws_data_item.cpp
|
||||
page_layout/ws_data_model.cpp
|
||||
page_layout/ws_data_model_io.cpp
|
||||
page_layout/page_layout_default_description.cpp
|
||||
page_layout/ws_draw_item.cpp
|
||||
page_layout/page_layout_reader_keywords.cpp
|
||||
|
|
|
@ -127,7 +127,11 @@ DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* parent, wxSize aMa
|
|||
m_tb = m_parent->GetTitleBlock();
|
||||
m_customFmt = false;
|
||||
m_localPrjConfigChanged = false;
|
||||
m_pagelayout = NULL;
|
||||
|
||||
m_pagelayout = new WS_DATA_MODEL;
|
||||
wxString serialization;
|
||||
WS_DATA_MODEL::GetTheInstance().SaveInString( serialization );
|
||||
m_pagelayout->SetPageLayout( TO_UTF8( serialization ) );
|
||||
|
||||
m_PickDate->SetValue( wxDateTime::Now() );
|
||||
|
||||
|
|
|
@ -180,18 +180,18 @@ void PAGE_LAYOUT_READER_PARSER::parseSetup( WS_DATA_MODEL* aLayout )
|
|||
break;
|
||||
|
||||
case T_linewidth:
|
||||
WS_DATA_ITEM::m_DefaultLineWidth = parseDouble();
|
||||
aLayout->m_DefaultLineWidth = parseDouble();
|
||||
NeedRIGHT();
|
||||
break;
|
||||
|
||||
case T_textsize:
|
||||
WS_DATA_ITEM::m_DefaultTextSize.x = parseDouble();
|
||||
WS_DATA_ITEM::m_DefaultTextSize.y = parseDouble();
|
||||
aLayout->m_DefaultTextSize.x = parseDouble();
|
||||
aLayout->m_DefaultTextSize.y = parseDouble();
|
||||
NeedRIGHT();
|
||||
break;
|
||||
|
||||
case T_textlinewidth:
|
||||
WS_DATA_ITEM::m_DefaultTextThickness = parseDouble();
|
||||
aLayout->m_DefaultTextThickness = parseDouble();
|
||||
NeedRIGHT();
|
||||
break;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2013 Jean-Pierre Charras <jp.charras at wanadoo.fr>.
|
||||
* Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
|
@ -52,25 +52,15 @@
|
|||
#include <fctsys.h>
|
||||
#include <draw_graphic_text.h>
|
||||
#include <eda_rect.h>
|
||||
#include <view/view.h>
|
||||
#include <ws_painter.h>
|
||||
#include <title_block.h>
|
||||
#include <ws_draw_item.h>
|
||||
#include <ws_data_item.h>
|
||||
#include <view/view.h>
|
||||
#include <ws_data_model.h>
|
||||
|
||||
using KIGFX::COLOR4D;
|
||||
|
||||
|
||||
// Static members of class WS_DATA_ITEM:
|
||||
double WS_DATA_ITEM::m_WSunits2Iu = 1000.0;
|
||||
DPOINT WS_DATA_ITEM::m_RB_Corner;
|
||||
DPOINT WS_DATA_ITEM::m_LT_Corner;
|
||||
double WS_DATA_ITEM::m_DefaultLineWidth = 0.0;
|
||||
DSIZE WS_DATA_ITEM::m_DefaultTextSize( TB_DEFAULT_TEXTSIZE, TB_DEFAULT_TEXTSIZE );
|
||||
double WS_DATA_ITEM::m_DefaultTextThickness = 0.0;
|
||||
bool WS_DATA_ITEM::m_SpecialMode = false;
|
||||
|
||||
|
||||
// The constructor:
|
||||
WS_DATA_ITEM::WS_DATA_ITEM( WS_ITEM_TYPE aType )
|
||||
{
|
||||
|
@ -130,6 +120,17 @@ void WS_DATA_ITEM::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIEW* aV
|
|||
}
|
||||
|
||||
|
||||
int WS_DATA_ITEM::GetPenSizeUi()
|
||||
{
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
if( m_LineWidth != 0 )
|
||||
return KiROUND( m_LineWidth * model.m_WSunits2Iu );
|
||||
else
|
||||
return KiROUND( model.m_DefaultLineWidth * model.m_WSunits2Iu );
|
||||
}
|
||||
|
||||
|
||||
// move item to aPosition
|
||||
// starting point is moved to aPosition
|
||||
// the Ending point is moved to a position which keeps the item size
|
||||
|
@ -139,8 +140,8 @@ void WS_DATA_ITEM::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIEW* aV
|
|||
void WS_DATA_ITEM::MoveToUi( wxPoint aPosition )
|
||||
{
|
||||
DPOINT pos_mm;
|
||||
pos_mm.x = aPosition.x / m_WSunits2Iu;
|
||||
pos_mm.y = aPosition.y / m_WSunits2Iu;
|
||||
pos_mm.x = aPosition.x / WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu;
|
||||
pos_mm.y = aPosition.y / WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu;
|
||||
|
||||
MoveTo( pos_mm );
|
||||
}
|
||||
|
@ -171,7 +172,8 @@ void WS_DATA_ITEM::MoveTo( DPOINT aPosition )
|
|||
*/
|
||||
void WS_DATA_ITEM::MoveStartPointTo( DPOINT aPosition )
|
||||
{
|
||||
DPOINT position;
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
DPOINT position;
|
||||
|
||||
// Calculate the position of the starting point
|
||||
// relative to the reference corner
|
||||
|
@ -179,21 +181,21 @@ void WS_DATA_ITEM::MoveStartPointTo( DPOINT aPosition )
|
|||
switch( m_Pos.m_Anchor )
|
||||
{
|
||||
case RB_CORNER:
|
||||
position = m_RB_Corner - aPosition;
|
||||
position = model.m_RB_Corner - aPosition;
|
||||
break;
|
||||
|
||||
case RT_CORNER:
|
||||
position.x = m_RB_Corner.x - aPosition.x;
|
||||
position.y = aPosition.y - m_LT_Corner.y;
|
||||
position.x = model.m_RB_Corner.x - aPosition.x;
|
||||
position.y = aPosition.y - model.m_LT_Corner.y;
|
||||
break;
|
||||
|
||||
case LB_CORNER:
|
||||
position.x = aPosition.x - m_LT_Corner.x;
|
||||
position.y = m_RB_Corner.y - aPosition.y;
|
||||
position.x = aPosition.x - model.m_LT_Corner.x;
|
||||
position.y = model.m_RB_Corner.y - aPosition.y;
|
||||
break;
|
||||
|
||||
case LT_CORNER:
|
||||
position = aPosition - m_LT_Corner;
|
||||
position = aPosition - model.m_LT_Corner;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -206,9 +208,8 @@ void WS_DATA_ITEM::MoveStartPointTo( DPOINT aPosition )
|
|||
*/
|
||||
void WS_DATA_ITEM::MoveStartPointToUi( wxPoint aPosition )
|
||||
{
|
||||
DPOINT pos_mm;
|
||||
pos_mm.x = aPosition.x / m_WSunits2Iu;
|
||||
pos_mm.y = aPosition.y / m_WSunits2Iu;
|
||||
DPOINT pos_mm( aPosition.x / WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu,
|
||||
aPosition.y / WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu );
|
||||
|
||||
MoveStartPointTo( pos_mm );
|
||||
}
|
||||
|
@ -222,7 +223,8 @@ void WS_DATA_ITEM::MoveStartPointToUi( wxPoint aPosition )
|
|||
*/
|
||||
void WS_DATA_ITEM::MoveEndPointTo( DPOINT aPosition )
|
||||
{
|
||||
DPOINT position;
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
DPOINT position;
|
||||
|
||||
// Calculate the position of the starting point
|
||||
// relative to the reference corner
|
||||
|
@ -230,21 +232,21 @@ void WS_DATA_ITEM::MoveEndPointTo( DPOINT aPosition )
|
|||
switch( m_End.m_Anchor )
|
||||
{
|
||||
case RB_CORNER:
|
||||
position = m_RB_Corner - aPosition;
|
||||
position = model.m_RB_Corner - aPosition;
|
||||
break;
|
||||
|
||||
case RT_CORNER:
|
||||
position.x = m_RB_Corner.x - aPosition.x;
|
||||
position.y = aPosition.y - m_LT_Corner.y;
|
||||
position.x = model.m_RB_Corner.x - aPosition.x;
|
||||
position.y = aPosition.y - model.m_LT_Corner.y;
|
||||
break;
|
||||
|
||||
case LB_CORNER:
|
||||
position.x = aPosition.x - m_LT_Corner.x;
|
||||
position.y = m_RB_Corner.y - aPosition.y;
|
||||
position.x = aPosition.x - model.m_LT_Corner.x;
|
||||
position.y = model.m_RB_Corner.y - aPosition.y;
|
||||
break;
|
||||
|
||||
case LT_CORNER:
|
||||
position = aPosition - m_LT_Corner;
|
||||
position = aPosition - model.m_LT_Corner;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -270,8 +272,8 @@ void WS_DATA_ITEM::MoveEndPointTo( DPOINT aPosition )
|
|||
void WS_DATA_ITEM::MoveEndPointToUi( wxPoint aPosition )
|
||||
{
|
||||
DPOINT pos_mm;
|
||||
pos_mm.x = aPosition.x / m_WSunits2Iu;
|
||||
pos_mm.y = aPosition.y / m_WSunits2Iu;
|
||||
pos_mm.x = aPosition.x / WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu;
|
||||
pos_mm.y = aPosition.y / WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu;
|
||||
|
||||
MoveEndPointTo( pos_mm );
|
||||
}
|
||||
|
@ -279,28 +281,28 @@ void WS_DATA_ITEM::MoveEndPointToUi( wxPoint aPosition )
|
|||
|
||||
const DPOINT WS_DATA_ITEM::GetStartPos( int ii ) const
|
||||
{
|
||||
DPOINT pos;
|
||||
pos.x = m_Pos.m_Pos.x + ( m_IncrementVector.x * ii );
|
||||
pos.y = m_Pos.m_Pos.y + ( m_IncrementVector.y * ii );
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
DPOINT pos( m_Pos.m_Pos.x + ( m_IncrementVector.x * ii ),
|
||||
m_Pos.m_Pos.y + ( m_IncrementVector.y * ii ) );
|
||||
|
||||
switch( m_Pos.m_Anchor )
|
||||
{
|
||||
case RB_CORNER: // right bottom corner
|
||||
pos = m_RB_Corner - pos;
|
||||
pos = model.m_RB_Corner - pos;
|
||||
break;
|
||||
|
||||
case RT_CORNER: // right top corner
|
||||
pos.x = m_RB_Corner.x - pos.x;
|
||||
pos.y = m_LT_Corner.y + pos.y;
|
||||
pos.x = model.m_RB_Corner.x - pos.x;
|
||||
pos.y = model.m_LT_Corner.y + pos.y;
|
||||
break;
|
||||
|
||||
case LB_CORNER: // left bottom corner
|
||||
pos.x = m_LT_Corner.x + pos.x;
|
||||
pos.y = m_RB_Corner.y - pos.y;
|
||||
pos.x = model.m_LT_Corner.x + pos.x;
|
||||
pos.y = model.m_RB_Corner.y - pos.y;
|
||||
break;
|
||||
|
||||
case LT_CORNER: // left top corner
|
||||
pos = m_LT_Corner + pos;
|
||||
pos = model.m_LT_Corner + pos;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -310,37 +312,35 @@ const DPOINT WS_DATA_ITEM::GetStartPos( int ii ) const
|
|||
|
||||
const wxPoint WS_DATA_ITEM::GetStartPosUi( int ii ) const
|
||||
{
|
||||
DPOINT pos = GetStartPos( ii );
|
||||
pos = pos * m_WSunits2Iu;
|
||||
return wxPoint( KiROUND( pos.x ), KiROUND( pos.y ) );
|
||||
DPOINT pos = GetStartPos( ii ) * WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu;
|
||||
return (wxPoint) pos;
|
||||
}
|
||||
|
||||
|
||||
const DPOINT WS_DATA_ITEM::GetEndPos( int ii ) const
|
||||
{
|
||||
DPOINT pos;
|
||||
pos.x = m_End.m_Pos.x + ( m_IncrementVector.x * ii );
|
||||
pos.y = m_End.m_Pos.y + ( m_IncrementVector.y * ii );
|
||||
DPOINT pos( m_End.m_Pos.x + ( m_IncrementVector.x * ii ),
|
||||
m_End.m_Pos.y + ( m_IncrementVector.y * ii ) );
|
||||
|
||||
switch( m_End.m_Anchor )
|
||||
{
|
||||
case RB_CORNER: // right bottom corner
|
||||
pos = m_RB_Corner - pos;
|
||||
break;
|
||||
case RB_CORNER: // right bottom corner
|
||||
pos = WS_DATA_MODEL::GetTheInstance().m_RB_Corner - pos;
|
||||
break;
|
||||
|
||||
case RT_CORNER: // right top corner
|
||||
pos.x = m_RB_Corner.x - pos.x;
|
||||
pos.y = m_LT_Corner.y + pos.y;
|
||||
break;
|
||||
case RT_CORNER: // right top corner
|
||||
pos.x = WS_DATA_MODEL::GetTheInstance().m_RB_Corner.x - pos.x;
|
||||
pos.y = WS_DATA_MODEL::GetTheInstance().m_LT_Corner.y + pos.y;
|
||||
break;
|
||||
|
||||
case LB_CORNER: // left bottom corner
|
||||
pos.x = m_LT_Corner.x + pos.x;
|
||||
pos.y = m_RB_Corner.y - pos.y;
|
||||
break;
|
||||
case LB_CORNER: // left bottom corner
|
||||
pos.x = WS_DATA_MODEL::GetTheInstance().m_LT_Corner.x + pos.x;
|
||||
pos.y = WS_DATA_MODEL::GetTheInstance().m_RB_Corner.y - pos.y;
|
||||
break;
|
||||
|
||||
case LT_CORNER: // left top corner
|
||||
pos = m_LT_Corner + pos;
|
||||
break;
|
||||
case LT_CORNER: // left top corner
|
||||
pos = WS_DATA_MODEL::GetTheInstance().m_LT_Corner + pos;
|
||||
break;
|
||||
}
|
||||
|
||||
return pos;
|
||||
|
@ -350,21 +350,23 @@ const DPOINT WS_DATA_ITEM::GetEndPos( int ii ) const
|
|||
const wxPoint WS_DATA_ITEM::GetEndPosUi( int ii ) const
|
||||
{
|
||||
DPOINT pos = GetEndPos( ii );
|
||||
pos = pos * m_WSunits2Iu;
|
||||
pos = pos * WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu;
|
||||
return wxPoint( KiROUND( pos.x ), KiROUND( pos.y ) );
|
||||
}
|
||||
|
||||
|
||||
bool WS_DATA_ITEM::IsInsidePage( int ii ) const
|
||||
{
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
DPOINT pos = GetStartPos( ii );
|
||||
|
||||
for( int kk = 0; kk < 1; kk++ )
|
||||
{
|
||||
if( m_RB_Corner.x < pos.x || m_LT_Corner.x > pos.x )
|
||||
if( model.m_RB_Corner.x < pos.x || model.m_LT_Corner.x > pos.x )
|
||||
return false;
|
||||
|
||||
if( m_RB_Corner.y < pos.y || m_LT_Corner.y > pos.y )
|
||||
if( model.m_RB_Corner.y < pos.y || model.m_LT_Corner.y > pos.y )
|
||||
return false;
|
||||
|
||||
pos = GetEndPos( ii );
|
||||
|
@ -398,8 +400,7 @@ WS_DATA_ITEM_POLYGONS::WS_DATA_ITEM_POLYGONS() :
|
|||
}
|
||||
|
||||
|
||||
void WS_DATA_ITEM_POLYGONS::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector,
|
||||
KIGFX::VIEW* aView )
|
||||
void WS_DATA_ITEM_POLYGONS::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIEW* aView )
|
||||
{
|
||||
std::map<int, STATUS_FLAGS> itemFlags;
|
||||
WS_DRAW_ITEM_BASE* item = nullptr;
|
||||
|
@ -450,6 +451,12 @@ void WS_DATA_ITEM_POLYGONS::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector,
|
|||
}
|
||||
|
||||
|
||||
int WS_DATA_ITEM_POLYGONS::GetPenSizeUi()
|
||||
{
|
||||
return KiROUND( m_LineWidth * WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu );
|
||||
}
|
||||
|
||||
|
||||
const DPOINT WS_DATA_ITEM_POLYGONS::GetCornerPosition( unsigned aIdx, int aRepeat ) const
|
||||
{
|
||||
DPOINT pos = m_Corners[aIdx];
|
||||
|
@ -497,16 +504,18 @@ void WS_DATA_ITEM_POLYGONS::SetBoundingBox()
|
|||
|
||||
bool WS_DATA_ITEM_POLYGONS::IsInsidePage( int ii ) const
|
||||
{
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
DPOINT pos = GetStartPos( ii );
|
||||
pos += m_minCoord; // left top pos of bounding box
|
||||
|
||||
if( m_LT_Corner.x > pos.x || m_LT_Corner.y > pos.y )
|
||||
if( model.m_LT_Corner.x > pos.x || model.m_LT_Corner.y > pos.y )
|
||||
return false;
|
||||
|
||||
pos = GetStartPos( ii );
|
||||
pos += m_maxCoord; // rignt bottom pos of bounding box
|
||||
|
||||
if( m_RB_Corner.x < pos.x || m_RB_Corner.y < pos.y )
|
||||
if( model.m_RB_Corner.x < pos.x || model.m_RB_Corner.y < pos.y )
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
@ -516,7 +525,7 @@ bool WS_DATA_ITEM_POLYGONS::IsInsidePage( int ii ) const
|
|||
const wxPoint WS_DATA_ITEM_POLYGONS::GetCornerPositionUi( unsigned aIdx, int aRepeat ) const
|
||||
{
|
||||
DPOINT pos = GetCornerPosition( aIdx, aRepeat );
|
||||
pos = pos * m_WSunits2Iu;
|
||||
pos = pos * WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu;
|
||||
return wxPoint( int(pos.x), int(pos.y) );
|
||||
}
|
||||
|
||||
|
@ -540,7 +549,7 @@ void WS_DATA_ITEM_TEXT::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIE
|
|||
int pensize = GetPenSizeUi();
|
||||
bool multilines = false;
|
||||
|
||||
if( m_SpecialMode )
|
||||
if( WS_DATA_MODEL::GetTheInstance().m_SpecialMode )
|
||||
m_FullText = m_TextBase;
|
||||
else
|
||||
{
|
||||
|
@ -554,8 +563,8 @@ void WS_DATA_ITEM_TEXT::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIE
|
|||
SetConstrainedTextSize();
|
||||
wxSize textsize;
|
||||
|
||||
textsize.x = KiROUND( m_ConstrainedTextSize.x * WS_DATA_ITEM::m_WSunits2Iu );
|
||||
textsize.y = KiROUND( m_ConstrainedTextSize.y * WS_DATA_ITEM::m_WSunits2Iu );
|
||||
textsize.x = KiROUND( m_ConstrainedTextSize.x * WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu );
|
||||
textsize.y = KiROUND( m_ConstrainedTextSize.y * WS_DATA_MODEL::GetTheInstance().m_WSunits2Iu );
|
||||
|
||||
if( m_Bold )
|
||||
pensize = GetPenSizeForBold( std::min( textsize.x, textsize.y ) );
|
||||
|
@ -607,6 +616,17 @@ void WS_DATA_ITEM_TEXT::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIE
|
|||
}
|
||||
|
||||
|
||||
int WS_DATA_ITEM_TEXT::GetPenSizeUi()
|
||||
{
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
if( m_LineWidth != 0 )
|
||||
return KiROUND( m_LineWidth * model.m_WSunits2Iu );
|
||||
else
|
||||
return KiROUND( model.m_DefaultTextThickness * model.m_WSunits2Iu );
|
||||
}
|
||||
|
||||
|
||||
void WS_DATA_ITEM_TEXT::IncrementLabel( int aIncr )
|
||||
{
|
||||
int last = m_TextBase.Len() -1;
|
||||
|
@ -666,10 +686,10 @@ void WS_DATA_ITEM_TEXT::SetConstrainedTextSize()
|
|||
m_ConstrainedTextSize = m_TextSize;
|
||||
|
||||
if( m_ConstrainedTextSize.x == 0 )
|
||||
m_ConstrainedTextSize.x = m_DefaultTextSize.x;
|
||||
m_ConstrainedTextSize.x = WS_DATA_MODEL::GetTheInstance().m_DefaultTextSize.x;
|
||||
|
||||
if( m_ConstrainedTextSize.y == 0 )
|
||||
m_ConstrainedTextSize.y = m_DefaultTextSize.y;
|
||||
m_ConstrainedTextSize.y = WS_DATA_MODEL::GetTheInstance().m_DefaultTextSize.y;
|
||||
|
||||
if( m_BoundingBoxSize.x || m_BoundingBoxSize.y )
|
||||
{
|
||||
|
@ -742,26 +762,6 @@ void WS_DATA_ITEM_BITMAP::SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::V
|
|||
}
|
||||
|
||||
|
||||
/* set the pixel scale factor of the bitmap
|
||||
* this factor depend on the application internal unit
|
||||
* and the PPI bitmap factor
|
||||
* the pixel scale factor should be initialized before drawing the bitmap
|
||||
*/
|
||||
void WS_DATA_ITEM_BITMAP::SetPixelScaleFactor()
|
||||
{
|
||||
if( m_ImageBitmap )
|
||||
{
|
||||
// m_WSunits2Iu is the page layout unit to application internal unit
|
||||
// i.e. the mm to to application internal unit
|
||||
// however the bitmap definition is always known in pixels per inches
|
||||
double scale = m_WSunits2Iu * 25.4 / m_ImageBitmap->GetPPI();
|
||||
m_ImageBitmap->SetPixelScaleFactor( scale );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* return the PPI of the bitmap
|
||||
*/
|
||||
int WS_DATA_ITEM_BITMAP::GetPPI() const
|
||||
{
|
||||
if( m_ImageBitmap )
|
||||
|
@ -771,8 +771,6 @@ int WS_DATA_ITEM_BITMAP::GetPPI() const
|
|||
}
|
||||
|
||||
|
||||
/*adjust the PPI of the bitmap
|
||||
*/
|
||||
void WS_DATA_ITEM_BITMAP::SetPPI( int aBitmapPPI )
|
||||
{
|
||||
if( m_ImageBitmap )
|
||||
|
|
|
@ -58,7 +58,12 @@
|
|||
static WS_DATA_MODEL wksTheInstance;
|
||||
static WS_DATA_MODEL* wksAltInstance;
|
||||
|
||||
WS_DATA_MODEL::WS_DATA_MODEL()
|
||||
WS_DATA_MODEL::WS_DATA_MODEL() :
|
||||
m_WSunits2Iu( 1000.0 ),
|
||||
m_DefaultLineWidth( 0.0 ),
|
||||
m_DefaultTextSize( TB_DEFAULT_TEXTSIZE, TB_DEFAULT_TEXTSIZE ),
|
||||
m_DefaultTextThickness( 0.0 ),
|
||||
m_SpecialMode( false )
|
||||
{
|
||||
m_allowVoidList = false;
|
||||
m_leftMargin = 10.0; // the left page margin in mm
|
||||
|
@ -90,27 +95,23 @@ void WS_DATA_MODEL::SetAltInstance( WS_DATA_MODEL* aLayout )
|
|||
}
|
||||
|
||||
|
||||
void WS_DATA_MODEL::SetLeftMargin( double aMargin )
|
||||
void WS_DATA_MODEL::SetupDrawEnvironment( const PAGE_INFO& aPageInfo, double aMilsToIU )
|
||||
{
|
||||
m_leftMargin = aMargin; // the left page margin in mm
|
||||
}
|
||||
#define MILS_TO_MM (25.4/1000)
|
||||
|
||||
m_WSunits2Iu = aMilsToIU / MILS_TO_MM;
|
||||
|
||||
void WS_DATA_MODEL::SetRightMargin( double aMargin )
|
||||
{
|
||||
m_rightMargin = aMargin; // the right page margin in mm
|
||||
}
|
||||
// Left top corner position
|
||||
DPOINT lt_corner;
|
||||
lt_corner.x = GetLeftMargin();
|
||||
lt_corner.y = GetTopMargin();
|
||||
m_LT_Corner = lt_corner;
|
||||
|
||||
|
||||
void WS_DATA_MODEL::SetTopMargin( double aMargin )
|
||||
{
|
||||
m_topMargin = aMargin; // the top page margin in mm
|
||||
}
|
||||
|
||||
|
||||
void WS_DATA_MODEL::SetBottomMargin( double aMargin )
|
||||
{
|
||||
m_bottomMargin = aMargin; // the bottom page margin in mm
|
||||
// Right bottom corner position
|
||||
DPOINT rb_corner;
|
||||
rb_corner.x = ( aPageInfo.GetSizeMils().x * MILS_TO_MM ) - GetRightMargin();
|
||||
rb_corner.y = ( aPageInfo.GetSizeMils().y * MILS_TO_MM ) - GetBottomMargin();
|
||||
m_RB_Corner = rb_corner;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2013-2016 CERN
|
||||
* Copyright (C) 2019 Kicad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* @author Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
*
|
||||
|
@ -63,15 +64,13 @@ protected:
|
|||
virtual ~WS_DATA_MODEL_IO() {}
|
||||
|
||||
public:
|
||||
void Format( WS_DATA_MODEL* aPageLayout ) const;
|
||||
void Format( WS_DATA_MODEL* aModel ) const;
|
||||
|
||||
void Format( WS_DATA_ITEM* aItem, int aNestLevel ) const;
|
||||
void Format( WS_DATA_MODEL* aModel, WS_DATA_ITEM* aItem, int aNestLevel ) const;
|
||||
|
||||
private:
|
||||
void format( WS_DATA_MODEL* aPageLayout ) const;
|
||||
|
||||
void format( WS_DATA_ITEM_TEXT* aItem, int aNestLevel ) const;
|
||||
void format( WS_DATA_ITEM* aItem, int aNestLevel ) const;
|
||||
void format( WS_DATA_MODEL* aModel, WS_DATA_ITEM* aItem, int aNestLevel ) const;
|
||||
void format( WS_DATA_ITEM_POLYGONS* aItem, int aNestLevel )
|
||||
const;
|
||||
void format( WS_DATA_ITEM_BITMAP* aItem, int aNestLevel ) const;
|
||||
|
@ -156,7 +155,7 @@ void WS_DATA_MODEL::SaveInString( wxString& aOutputString )
|
|||
}
|
||||
|
||||
|
||||
void WS_DATA_MODEL_IO::Format( WS_DATA_ITEM* aItem, int aNestLevel ) const
|
||||
void WS_DATA_MODEL_IO::Format( WS_DATA_MODEL* aModel, WS_DATA_ITEM* aItem, int aNestLevel ) const
|
||||
{
|
||||
switch( aItem->GetType() )
|
||||
{
|
||||
|
@ -166,7 +165,7 @@ void WS_DATA_MODEL_IO::Format( WS_DATA_ITEM* aItem, int aNestLevel ) const
|
|||
|
||||
case WS_DATA_ITEM::WS_SEGMENT:
|
||||
case WS_DATA_ITEM::WS_RECT:
|
||||
format( aItem, aNestLevel );
|
||||
format( aModel, aItem, aNestLevel );
|
||||
break;
|
||||
|
||||
case WS_DATA_ITEM::WS_POLYPOLYGON:
|
||||
|
@ -194,12 +193,12 @@ void WS_DATA_MODEL_IO::Format( WS_DATA_MODEL* aPageLayout ) const
|
|||
// Write default values:
|
||||
m_out->Print( nestLevel, "(%s ", getTokenName( T_setup ) );
|
||||
m_out->Print( 0, "(textsize %s %s)",
|
||||
double2Str( WS_DATA_ITEM::m_DefaultTextSize.x ).c_str(),
|
||||
double2Str( WS_DATA_ITEM::m_DefaultTextSize.y ).c_str() );
|
||||
double2Str( aPageLayout->m_DefaultTextSize.x ).c_str(),
|
||||
double2Str( aPageLayout->m_DefaultTextSize.y ).c_str() );
|
||||
m_out->Print( 0, "(linewidth %s)",
|
||||
double2Str( WS_DATA_ITEM::m_DefaultLineWidth ).c_str() );
|
||||
double2Str( aPageLayout->m_DefaultLineWidth ).c_str() );
|
||||
m_out->Print( 0, "(textlinewidth %s)",
|
||||
double2Str( WS_DATA_ITEM::m_DefaultTextThickness ).c_str() );
|
||||
double2Str( aPageLayout->m_DefaultTextThickness ).c_str() );
|
||||
m_out->Print( 0, "\n" );
|
||||
|
||||
// Write margin values
|
||||
|
@ -217,7 +216,7 @@ void WS_DATA_MODEL_IO::Format( WS_DATA_MODEL* aPageLayout ) const
|
|||
for( unsigned ii = 0; ii < aPageLayout->GetCount(); ii++ )
|
||||
{
|
||||
WS_DATA_ITEM* item = aPageLayout->GetItem( ii );
|
||||
Format( item, nestLevel );
|
||||
Format( aPageLayout, item, nestLevel );
|
||||
}
|
||||
|
||||
m_out->Print( 0, ")\n" );
|
||||
|
@ -304,7 +303,7 @@ void WS_DATA_MODEL_IO::format( WS_DATA_ITEM_TEXT* aItem, int aNestLevel ) const
|
|||
m_out->Print( 0, ")\n" );
|
||||
}
|
||||
|
||||
void WS_DATA_MODEL_IO::format( WS_DATA_ITEM* aItem, int aNestLevel ) const
|
||||
void WS_DATA_MODEL_IO::format( WS_DATA_MODEL* aModel, WS_DATA_ITEM* aItem, int aNestLevel ) const
|
||||
{
|
||||
if( aItem->GetType() == WS_DATA_ITEM::WS_RECT )
|
||||
m_out->Print( aNestLevel, "(%s", getTokenName( T_rect ) );
|
||||
|
@ -318,7 +317,7 @@ void WS_DATA_MODEL_IO::format( WS_DATA_ITEM* aItem, int aNestLevel ) const
|
|||
formatCoordinate( getTokenName( T_end ), aItem->m_End );
|
||||
formatOptions( aItem );
|
||||
|
||||
if( aItem->m_LineWidth && aItem->m_LineWidth != aItem->m_DefaultLineWidth )
|
||||
if( aItem->m_LineWidth && aItem->m_LineWidth != aModel->m_DefaultLineWidth )
|
||||
m_out->Print( 0, " (linewidth %s)", double2Str( aItem->m_LineWidth ).c_str() );
|
||||
|
||||
formatRepeatParameters( aItem );
|
|
@ -396,47 +396,21 @@ wxString WS_DRAW_ITEM_BITMAP::GetSelectMenuText( EDA_UNITS_T aUnits ) const
|
|||
|
||||
// ============================ LIST ==============================
|
||||
|
||||
#define MILS_TO_MM (25.4/1000)
|
||||
|
||||
|
||||
void WS_DRAW_ITEM_LIST::SetupDrawEnvironment( const PAGE_INFO& aPageInfo )
|
||||
{
|
||||
WS_DATA_MODEL& pglayout = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
// Left top corner position
|
||||
DPOINT lt_corner;
|
||||
lt_corner.x = pglayout.GetLeftMargin();
|
||||
lt_corner.y = pglayout.GetTopMargin();
|
||||
WS_DATA_ITEM::m_LT_Corner = lt_corner;
|
||||
|
||||
// Right bottom corner position
|
||||
DPOINT rb_corner;
|
||||
rb_corner.x = ( aPageInfo.GetSizeMils().x * MILS_TO_MM ) - pglayout.GetRightMargin();
|
||||
rb_corner.y = ( aPageInfo.GetSizeMils().y * MILS_TO_MM ) - pglayout.GetBottomMargin();
|
||||
WS_DATA_ITEM::m_RB_Corner = rb_corner;
|
||||
}
|
||||
|
||||
|
||||
void WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList( const PAGE_INFO& aPageInfo,
|
||||
const TITLE_BLOCK& aTitleBlock )
|
||||
{
|
||||
WS_DATA_MODEL& pglayout = WS_DATA_MODEL::GetTheInstance();
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
m_titleBlock = &aTitleBlock;
|
||||
m_paperFormat = &aPageInfo.GetType();
|
||||
|
||||
wxPoint LTmargin( Mm2mils( pglayout.GetLeftMargin() ), Mm2mils( pglayout.GetTopMargin() ) );
|
||||
wxPoint RBmargin( Mm2mils( pglayout.GetRightMargin() ), Mm2mils( pglayout.GetBottomMargin() ) );
|
||||
|
||||
// Build the basic layout shape, if the layout list is empty
|
||||
if( pglayout.GetCount() == 0 && !pglayout.VoidListAllowed() )
|
||||
pglayout.SetPageLayout();
|
||||
if( model.GetCount() == 0 && !model.VoidListAllowed() )
|
||||
model.SetPageLayout();
|
||||
|
||||
WS_DATA_ITEM::m_WSunits2Iu = m_milsToIu / MILS_TO_MM;
|
||||
model.SetupDrawEnvironment( aPageInfo, m_milsToIu );
|
||||
|
||||
SetupDrawEnvironment( aPageInfo );
|
||||
|
||||
for( WS_DATA_ITEM* wsItem : pglayout.GetItems() )
|
||||
for( WS_DATA_ITEM* wsItem : model.GetItems() )
|
||||
{
|
||||
// Generate it only if the page option allows this
|
||||
if( wsItem->GetPage1Option() == FIRST_PAGE_ONLY && m_sheetNumber != 1 )
|
||||
|
|
|
@ -115,29 +115,6 @@ public:
|
|||
// for position increment
|
||||
int m_IncrementLabel;
|
||||
|
||||
// These variables are static, because these values are common to all
|
||||
// instances of WS_DATA_ITEM.
|
||||
// They are default or common values.
|
||||
//==============================================================================
|
||||
// JEY TODO: these globals are death when we try to generate the page setttings preview...
|
||||
// move them to member variables of WS_DATA_MODEL
|
||||
//==============================================================================
|
||||
static double m_WSunits2Iu; // conversion factor between
|
||||
// ws units (mils) and draw/plot units
|
||||
static DPOINT m_RB_Corner; // cordinates of the right bottom corner
|
||||
// (ws units)
|
||||
static DPOINT m_LT_Corner; // cordinates of the left top corner
|
||||
// (ws units)
|
||||
static double m_DefaultLineWidth; // Default line width,
|
||||
// when not defined inside a line
|
||||
// or a rect
|
||||
static DSIZE m_DefaultTextSize; // Default text size,
|
||||
// when not defined inside a tbtext
|
||||
static double m_DefaultTextThickness; // Default text thickness,
|
||||
// when not defined inside a tbtext
|
||||
static bool m_SpecialMode; // Used in page layout editor
|
||||
// When set to true, base texts
|
||||
// instead of full texts are displayed
|
||||
public:
|
||||
WS_DATA_ITEM( WS_ITEM_TYPE aType );
|
||||
|
||||
|
@ -168,8 +145,6 @@ public:
|
|||
* @return true if the item has a end point (segment; rect)
|
||||
* of false (text, polugon)
|
||||
*/
|
||||
virtual bool HasEndPoint() { return true; }
|
||||
|
||||
PAGE_OPTION GetPage1Option() const { return m_pageOption; }
|
||||
void SetPage1Option( PAGE_OPTION aChoice ) { m_pageOption = aChoice; }
|
||||
|
||||
|
@ -178,13 +153,8 @@ public:
|
|||
const wxPoint GetEndPosUi( int ii = 0 ) const;
|
||||
const DPOINT GetStartPos( int ii = 0 ) const;
|
||||
const DPOINT GetEndPos( int ii = 0 ) const;
|
||||
virtual int GetPenSizeUi()
|
||||
{
|
||||
if( m_LineWidth )
|
||||
return KiROUND( m_LineWidth * m_WSunits2Iu );
|
||||
else
|
||||
return KiROUND( m_DefaultLineWidth * m_WSunits2Iu );
|
||||
}
|
||||
|
||||
virtual int GetPenSizeUi();
|
||||
|
||||
/**
|
||||
* move item to a new position
|
||||
|
@ -253,15 +223,7 @@ public:
|
|||
|
||||
void SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIEW* aView ) override;
|
||||
|
||||
virtual int GetPenSizeUi() override
|
||||
{
|
||||
return KiROUND( m_LineWidth * m_WSunits2Iu );
|
||||
}
|
||||
|
||||
/**
|
||||
* @return false (no end point)
|
||||
*/
|
||||
virtual bool HasEndPoint() override { return false; }
|
||||
virtual int GetPenSizeUi() override;
|
||||
|
||||
/**
|
||||
* add a corner in corner list
|
||||
|
@ -353,18 +315,7 @@ public:
|
|||
|
||||
void SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIEW* aView ) override;
|
||||
|
||||
/**
|
||||
* @return false (no end point)
|
||||
*/
|
||||
virtual bool HasEndPoint() override { return false; }
|
||||
|
||||
virtual int GetPenSizeUi() override
|
||||
{
|
||||
if( m_LineWidth )
|
||||
return KiROUND( m_LineWidth * m_WSunits2Iu );
|
||||
else
|
||||
return KiROUND( m_DefaultTextThickness * m_WSunits2Iu );
|
||||
}
|
||||
virtual int GetPenSizeUi() override;
|
||||
|
||||
/**
|
||||
* move item to a new position
|
||||
|
@ -418,30 +369,8 @@ public:
|
|||
|
||||
void SyncDrawItems( WS_DRAW_ITEM_LIST* aCollector, KIGFX::VIEW* aView ) override;
|
||||
|
||||
/**
|
||||
* @return false (no end point)
|
||||
*/
|
||||
virtual bool HasEndPoint() override { return false; }
|
||||
|
||||
/**
|
||||
* @return the PPI of the bitmap
|
||||
*/
|
||||
int GetPPI() const;
|
||||
|
||||
/**
|
||||
* adjust the PPI of the bitmap
|
||||
* @param aBitmapPPI = the ned PPI for the bitmap
|
||||
*/
|
||||
void SetPPI( int aBitmapPPI );
|
||||
|
||||
/**
|
||||
* set the pixel scale factor of the bitmap
|
||||
* this factor depend on the application internal unit
|
||||
* and the pixel per inch bitmap factor
|
||||
* the pixel scale factor is the pixel size to application internal unit
|
||||
* and should be initialized before printing or drawing the bitmap
|
||||
*/
|
||||
void SetPixelScaleFactor();
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -39,18 +39,30 @@
|
|||
class WS_DATA_MODEL
|
||||
{
|
||||
std::vector <WS_DATA_ITEM*> m_list;
|
||||
bool m_allowVoidList; // If false, the default page layout
|
||||
// will be loaded the first time
|
||||
// WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList
|
||||
// is run (useful mainly for page layout editor)
|
||||
double m_leftMargin; // the left page margin in mm
|
||||
double m_rightMargin; // the right page margin in mm
|
||||
double m_topMargin; // the top page margin in mm
|
||||
double m_bottomMargin; // the bottom page margin in mm
|
||||
bool m_allowVoidList; // If false, the default page layout will be loaded the
|
||||
// first time WS_DRAW_ITEM_LIST::BuildWorkSheetGraphicList
|
||||
// is run (useful mainly for page layout editor)
|
||||
double m_leftMargin; // the left page margin in mm
|
||||
double m_rightMargin; // the right page margin in mm
|
||||
double m_topMargin; // the top page margin in mm
|
||||
double m_bottomMargin; // the bottom page margin in mm
|
||||
|
||||
public:
|
||||
double m_WSunits2Iu; // conversion factor between
|
||||
// ws units (mils) and draw/plot units
|
||||
DPOINT m_RB_Corner; // cordinates of the right bottom corner (in mm)
|
||||
DPOINT m_LT_Corner; // cordinates of the left top corner (in mm)
|
||||
double m_DefaultLineWidth; // Used when object line width is 0
|
||||
DSIZE m_DefaultTextSize; // Used when object text size is 0
|
||||
double m_DefaultTextThickness; // Used when object text stroke width is 0
|
||||
bool m_SpecialMode; // Used in page layout editor to toggle variable substition
|
||||
|
||||
public:
|
||||
WS_DATA_MODEL();
|
||||
~WS_DATA_MODEL() {ClearList(); }
|
||||
~WS_DATA_MODEL()
|
||||
{
|
||||
ClearList();
|
||||
}
|
||||
|
||||
/**
|
||||
* static function: returns the instance of WS_DATA_MODEL used in the application
|
||||
|
@ -66,14 +78,18 @@ public:
|
|||
|
||||
// Accessors:
|
||||
double GetLeftMargin() { return m_leftMargin; }
|
||||
double GetRightMargin() { return m_rightMargin; }
|
||||
double GetTopMargin() { return m_topMargin; }
|
||||
double GetBottomMargin() { return m_bottomMargin; }
|
||||
void SetLeftMargin( double aMargin ) { m_leftMargin = aMargin; }
|
||||
|
||||
void SetLeftMargin( double aMargin );
|
||||
void SetRightMargin( double aMargin );
|
||||
void SetTopMargin( double aMargin );
|
||||
void SetBottomMargin( double aMargin );
|
||||
double GetRightMargin() { return m_rightMargin; }
|
||||
void SetRightMargin( double aMargin ) { m_rightMargin = aMargin; }
|
||||
|
||||
double GetTopMargin() { return m_topMargin; }
|
||||
void SetTopMargin( double aMargin ) { m_topMargin = aMargin; }
|
||||
|
||||
double GetBottomMargin() { return m_bottomMargin; }
|
||||
void SetBottomMargin( double aMargin ) { m_bottomMargin = aMargin; }
|
||||
|
||||
void SetupDrawEnvironment( const PAGE_INFO& aPageInfo, double aMilsToIU );
|
||||
|
||||
/**
|
||||
* In Kicad applications, a page layout description is needed
|
||||
|
|
|
@ -439,11 +439,6 @@ public:
|
|||
*aList = m_graphicList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up the WORKSHEET_DATAITEM globals for generating drawItems.
|
||||
*/
|
||||
static void SetupDrawEnvironment( const PAGE_INFO& aPageInfo );
|
||||
|
||||
/**
|
||||
* Draws the item list created by BuildWorkSheetGraphicList
|
||||
* @param aClipBox = the clipping rect, or NULL if no clipping
|
||||
|
|
|
@ -21,7 +21,7 @@ set( PL_EDITOR_SRCS
|
|||
pl_editor_screen.cpp
|
||||
pl_editor_layout.cpp
|
||||
files.cpp
|
||||
page_layout_writer.cpp
|
||||
../common/page_layout/ws_data_model_io.cpp
|
||||
pl_editor_frame.cpp
|
||||
pl_editor_undo_redo.cpp
|
||||
properties_frame.cpp
|
||||
|
|
|
@ -71,13 +71,14 @@ void PL_DRAW_PANEL_GAL::GetMsgPanelInfo( EDA_UNITS_T aUnits, std::vector<MSG_PAN
|
|||
void PL_DRAW_PANEL_GAL::DisplayWorksheet()
|
||||
{
|
||||
PL_SELECTION_TOOL* selTool = m_edaFrame->GetToolManager()->GetTool<PL_SELECTION_TOOL>();
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
selTool->GetSelection().Clear();
|
||||
m_view->Clear();
|
||||
|
||||
WS_DRAW_ITEM_LIST::SetupDrawEnvironment( m_edaFrame->GetPageSettings() );
|
||||
model.SetupDrawEnvironment( m_edaFrame->GetPageSettings(), Mils2iu( 1 ) );
|
||||
|
||||
for( WS_DATA_ITEM* dataItem : WS_DATA_MODEL::GetTheInstance().GetItems() )
|
||||
for( WS_DATA_ITEM* dataItem : model.GetItems() )
|
||||
dataItem->SyncDrawItems( nullptr, m_view );
|
||||
|
||||
selTool->RebuildSelection();
|
||||
|
|
|
@ -92,7 +92,7 @@ PL_EDITOR_FRAME::PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
|
|||
m_hotkeysDescrList = PlEditorHotkeysDescr;
|
||||
m_originSelectChoice = 0;
|
||||
SetDrawBgColor( WHITE ); // default value, user option (WHITE/BLACK)
|
||||
WS_DATA_ITEM::m_SpecialMode = true;
|
||||
WS_DATA_MODEL::GetTheInstance().m_SpecialMode = true;
|
||||
SetShowPageLimits( true );
|
||||
m_AboutTitle = "PlEditor";
|
||||
|
||||
|
@ -321,7 +321,7 @@ void PL_EDITOR_FRAME::OnSelectCoordOriginCorner( wxCommandEvent& event )
|
|||
|
||||
void PL_EDITOR_FRAME::OnSelectTitleBlockDisplayMode( wxCommandEvent& event )
|
||||
{
|
||||
WS_DATA_ITEM::m_SpecialMode = (event.GetId() == ID_SHOW_PL_EDITOR_MODE);
|
||||
WS_DATA_MODEL::GetTheInstance().m_SpecialMode = (event.GetId() == ID_SHOW_PL_EDITOR_MODE);
|
||||
HardRedraw();
|
||||
}
|
||||
|
||||
|
@ -373,13 +373,13 @@ void PL_EDITOR_FRAME::ToPrinter( bool doPreview )
|
|||
|
||||
void PL_EDITOR_FRAME::OnUpdateTitleBlockDisplayNormalMode( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Check( WS_DATA_ITEM::m_SpecialMode == false );
|
||||
event.Check( WS_DATA_MODEL::GetTheInstance().m_SpecialMode == false );
|
||||
}
|
||||
|
||||
|
||||
void PL_EDITOR_FRAME::OnUpdateTitleBlockDisplaySpecialMode( wxUpdateUIEvent& event )
|
||||
{
|
||||
event.Check( WS_DATA_ITEM::m_SpecialMode == true );
|
||||
event.Check( WS_DATA_MODEL::GetTheInstance().m_SpecialMode == true );
|
||||
}
|
||||
|
||||
|
||||
|
@ -505,9 +505,7 @@ void PL_EDITOR_FRAME::UpdateStatusBar()
|
|||
// Display Zoom level:
|
||||
EDA_DRAW_FRAME::UpdateStatusBar();
|
||||
|
||||
// coordinate origin can be the paper Top Left corner,
|
||||
// or each of 4 page corners
|
||||
// We know the origin, and the orientation of axis
|
||||
// coordinate origin can be the paper Top Left corner, or each of 4 page corners
|
||||
wxPoint originCoord;
|
||||
int Xsign = 1;
|
||||
int Ysign = 1;
|
||||
|
|
|
@ -70,63 +70,62 @@ wxSize PROPERTIES_FRAME::GetMinSize() const
|
|||
// Data transfert from general properties to widgets
|
||||
void PROPERTIES_FRAME::CopyPrmsFromGeneralToPanel()
|
||||
{
|
||||
wxString msg;
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
wxString msg;
|
||||
|
||||
// Set default parameters
|
||||
msg.Printf( wxT("%.3f"), WS_DATA_ITEM::m_DefaultLineWidth );
|
||||
msg.Printf( wxT("%.3f"), model.m_DefaultLineWidth );
|
||||
m_textCtrlDefaultLineWidth->SetValue( msg );
|
||||
|
||||
msg.Printf( wxT("%.3f"), WS_DATA_ITEM::m_DefaultTextSize.x );
|
||||
msg.Printf( wxT("%.3f"), model.m_DefaultTextSize.x );
|
||||
m_textCtrlDefaultTextSizeX->SetValue( msg );
|
||||
msg.Printf( wxT("%.3f"), WS_DATA_ITEM::m_DefaultTextSize.y );
|
||||
msg.Printf( wxT("%.3f"), model.m_DefaultTextSize.y );
|
||||
m_textCtrlDefaultTextSizeY->SetValue( msg );
|
||||
|
||||
msg.Printf( wxT("%.3f"), WS_DATA_ITEM::m_DefaultTextThickness );
|
||||
msg.Printf( wxT("%.3f"), model.m_DefaultTextThickness );
|
||||
m_textCtrlDefaultTextThickness->SetValue( msg );
|
||||
|
||||
// Set page margins values
|
||||
WS_DATA_MODEL& pglayout = WS_DATA_MODEL::GetTheInstance();
|
||||
msg.Printf( wxT("%.3f"), pglayout.GetRightMargin() );
|
||||
msg.Printf( wxT("%.3f"), model.GetRightMargin() );
|
||||
m_textCtrlRightMargin->SetValue( msg );
|
||||
msg.Printf( wxT("%.3f"), pglayout.GetBottomMargin() );
|
||||
msg.Printf( wxT("%.3f"), model.GetBottomMargin() );
|
||||
m_textCtrlDefaultBottomMargin->SetValue( msg );
|
||||
|
||||
msg.Printf( wxT("%.3f"), pglayout.GetLeftMargin() );
|
||||
msg.Printf( wxT("%.3f"), model.GetLeftMargin() );
|
||||
m_textCtrlLeftMargin->SetValue( msg );
|
||||
msg.Printf( wxT("%.3f"), pglayout.GetTopMargin() );
|
||||
msg.Printf( wxT("%.3f"), model.GetTopMargin() );
|
||||
m_textCtrlTopMargin->SetValue( msg );
|
||||
}
|
||||
|
||||
// Data transfert from widgets to general properties
|
||||
bool PROPERTIES_FRAME::CopyPrmsFromPanelToGeneral()
|
||||
{
|
||||
wxString msg;
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
wxString msg;
|
||||
|
||||
// Import default parameters from widgets
|
||||
msg = m_textCtrlDefaultLineWidth->GetValue();
|
||||
WS_DATA_ITEM::m_DefaultLineWidth = DoubleValueFromString( UNSCALED_UNITS, msg );
|
||||
model.m_DefaultLineWidth = DoubleValueFromString( UNSCALED_UNITS, msg );
|
||||
|
||||
msg = m_textCtrlDefaultTextSizeX->GetValue();
|
||||
WS_DATA_ITEM::m_DefaultTextSize.x = DoubleValueFromString( UNSCALED_UNITS, msg );
|
||||
model.m_DefaultTextSize.x = DoubleValueFromString( UNSCALED_UNITS, msg );
|
||||
msg = m_textCtrlDefaultTextSizeY->GetValue();
|
||||
WS_DATA_ITEM::m_DefaultTextSize.y = DoubleValueFromString( UNSCALED_UNITS, msg );
|
||||
model.m_DefaultTextSize.y = DoubleValueFromString( UNSCALED_UNITS, msg );
|
||||
|
||||
msg = m_textCtrlDefaultTextThickness->GetValue();
|
||||
WS_DATA_ITEM::m_DefaultTextThickness = DoubleValueFromString( UNSCALED_UNITS, msg );
|
||||
model.m_DefaultTextThickness = DoubleValueFromString( UNSCALED_UNITS, msg );
|
||||
|
||||
// Get page margins values
|
||||
WS_DATA_MODEL& pglayout = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
msg = m_textCtrlRightMargin->GetValue();
|
||||
pglayout.SetRightMargin( DoubleValueFromString( UNSCALED_UNITS, msg ) );
|
||||
model.SetRightMargin( DoubleValueFromString( UNSCALED_UNITS, msg ) );
|
||||
msg = m_textCtrlDefaultBottomMargin->GetValue();
|
||||
pglayout.SetBottomMargin( DoubleValueFromString( UNSCALED_UNITS, msg ) );
|
||||
model.SetBottomMargin( DoubleValueFromString( UNSCALED_UNITS, msg ) );
|
||||
|
||||
// cordinates of the left top corner are the left and top margins
|
||||
msg = m_textCtrlLeftMargin->GetValue();
|
||||
pglayout.SetLeftMargin( DoubleValueFromString( UNSCALED_UNITS, msg ) );
|
||||
model.SetLeftMargin( DoubleValueFromString( UNSCALED_UNITS, msg ) );
|
||||
msg = m_textCtrlTopMargin->GetValue();
|
||||
pglayout.SetTopMargin( DoubleValueFromString( UNSCALED_UNITS, msg ) );
|
||||
model.SetTopMargin( DoubleValueFromString( UNSCALED_UNITS, msg ) );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -316,11 +315,11 @@ void PROPERTIES_FRAME::OnAcceptPrms( wxCommandEvent& event )
|
|||
|
||||
void PROPERTIES_FRAME::OnSetDefaultValues( wxCommandEvent& event )
|
||||
{
|
||||
WS_DATA_ITEM::m_DefaultTextSize =
|
||||
DSIZE( TB_DEFAULT_TEXTSIZE, TB_DEFAULT_TEXTSIZE );
|
||||
// default thickness in mm
|
||||
WS_DATA_ITEM::m_DefaultLineWidth = 0.15;
|
||||
WS_DATA_ITEM::m_DefaultTextThickness = 0.15;
|
||||
WS_DATA_MODEL& model = WS_DATA_MODEL::GetTheInstance();
|
||||
|
||||
model.m_DefaultTextSize = DSIZE( TB_DEFAULT_TEXTSIZE, TB_DEFAULT_TEXTSIZE );
|
||||
model.m_DefaultLineWidth = 0.15;
|
||||
model.m_DefaultTextThickness = 0.15;
|
||||
|
||||
CopyPrmsFromGeneralToPanel();
|
||||
m_parent->GetCanvas()->Refresh();
|
||||
|
|
Loading…
Reference in New Issue