KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pcb_origin_transforms.h
Go to the documentation of this file.
1
/*
2
* This program source code file is part of KiCad, a free EDA CAD application.
3
*
4
* Copyright (C) 2019-2020 Reece R. Pollack <
[email protected]
>
5
* Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6
*
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License
9
* as published by the Free Software Foundation; either version 2
10
* of the License, or (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, you may find one here:
19
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20
* or you may search the http://www.gnu.org website for the version 2 license,
21
* or you may write to the Free Software Foundation, Inc.,
22
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23
*/
24
25
#pragma once
26
27
#include <
origin_transforms.h
>
28
29
class
PCB_BASE_FRAME
;
30
31
class
PCB_ORIGIN_TRANSFORMS
:
public
ORIGIN_TRANSFORMS
32
{
33
public
:
34
PCB_ORIGIN_TRANSFORMS
(
PCB_BASE_FRAME
& aPcbBaseFrame );
35
36
~PCB_ORIGIN_TRANSFORMS
() =
default
;
37
38
using
ORIGIN_TRANSFORMS::ToDisplay
;
39
40
virtual
long
long
int
ToDisplay
(
long
long
int
aValue,
COORD_TYPES_T
aCoordType )
const override
;
41
virtual
double
ToDisplay
(
double
aValue,
COORD_TYPES_T
aCoordType )
const override
;
42
virtual
double
ToDisplay
(
const
EDA_ANGLE
& aValue,
COORD_TYPES_T
aCoordType )
const override
;
43
44
using
ORIGIN_TRANSFORMS::FromDisplay
;
45
46
virtual
long
long
int
FromDisplay
(
long
long
int
aValue,
COORD_TYPES_T
aCoordType )
const override
;
47
virtual
double
FromDisplay
(
double
aValue,
COORD_TYPES_T
aCoordType )
const override
;
48
virtual
EDA_ANGLE
FromDisplay
(
const
EDA_ANGLE
& aValue,
COORD_TYPES_T
aCoordType )
const override
;
49
57
65
76
87
88
89
// =============== Single-axis Relative Transforms ===============
90
91
template
<
typename
T>
92
T
ToDisplayRelX
(
T
aInternalValue )
const
93
{
94
return
ORIGIN_TRANSFORMS::ToDisplayRel
( aInternalValue,
invertXAxis
() );
95
}
96
97
template
<
typename
T>
98
T
ToDisplayRelY
(
T
aInternalValue )
const
99
{
100
return
ORIGIN_TRANSFORMS::ToDisplayRel
( aInternalValue,
invertYAxis
() );
101
}
102
103
template
<
typename
T>
104
T
FromDisplayRelX
(
T
aDisplayValue )
const
105
{
106
return
ORIGIN_TRANSFORMS::FromDisplayRel
( aDisplayValue,
invertXAxis
() );
107
}
108
109
template
<
typename
T>
110
T
FromDisplayRelY
(
T
aDisplayValue )
const
111
{
112
return
ORIGIN_TRANSFORMS::FromDisplayRel
( aDisplayValue,
invertYAxis
() );
113
}
114
115
116
// =============== Single-axis Absolute Transforms ===============
117
118
template
<
typename
T>
119
T
ToDisplayAbsX
(
T
aInternalValue )
const
120
{
121
return
ORIGIN_TRANSFORMS::ToDisplayAbs
( aInternalValue,
getUserXOrigin
(),
invertXAxis
() );
122
}
123
124
template
<
typename
T>
125
T
ToDisplayAbsY
(
T
aInternalValue )
const
126
{
127
return
ORIGIN_TRANSFORMS::ToDisplayAbs
( aInternalValue,
getUserYOrigin
(),
invertYAxis
() );
128
}
129
130
template
<
typename
T>
131
T
FromDisplayAbsX
(
T
aDisplayValue )
const
132
{
133
return
ORIGIN_TRANSFORMS::FromDisplayAbs
( aDisplayValue,
getUserXOrigin
(),
invertXAxis
() );
134
}
135
136
template
<
typename
T>
137
T
FromDisplayAbsY
(
T
aDisplayValue )
const
138
{
139
return
ORIGIN_TRANSFORMS::FromDisplayAbs
( aDisplayValue,
getUserYOrigin
(),
invertYAxis
() );
140
}
141
142
143
// =============== Two-axis Transforms ===============
144
145
template
<
typename
T>
146
T
ToDisplayAbs
(
T
aInternalValue )
const
147
{
148
T
displayValue;
149
150
displayValue.x =
ToDisplayAbsX
( aInternalValue.x );
151
displayValue.y =
ToDisplayAbsY
( aInternalValue.y );
152
153
return
displayValue;
154
}
155
156
template
<
typename
T>
157
T
FromDisplayAbs
(
T
aDisplayValue )
const
158
{
159
T
internalValue;
160
161
internalValue.x =
FromDisplayAbsX
( aDisplayValue.x );
162
internalValue.y =
FromDisplayAbsY
( aDisplayValue.y );
163
164
return
internalValue;
165
}
166
167
template
<
typename
T>
168
T
ToDisplayRel
(
T
aInternalValue )
const
169
{
170
T
displayValue;
171
172
displayValue.x =
ToDisplayRelX
( aInternalValue.x );
173
displayValue.y =
ToDisplayRelY
( aInternalValue.y );
174
175
return
displayValue;
176
}
177
178
template
<
typename
T>
179
T
FromDisplayRel
(
T
aDisplayValue )
const
180
{
181
T
internalValue;
182
183
internalValue.x =
FromDisplayRelX
( aDisplayValue.x );
184
internalValue.y =
FromDisplayRelY
( aDisplayValue.y );
185
186
return
internalValue;
187
}
188
189
protected
:
190
int
getUserXOrigin
()
const
;
191
int
getUserYOrigin
()
const
;
192
193
bool
invertXAxis
()
const
;
194
bool
invertYAxis
()
const
;
195
196
protected
:
197
const
PCB_BASE_FRAME
&
m_pcbBaseFrame
;
198
};
EDA_ANGLE
Definition
eda_angle.h:37
ORIGIN_TRANSFORMS
A class to perform either relative or absolute display origin transforms for a single axis of a point...
Definition
origin_transforms.h:41
ORIGIN_TRANSFORMS::FromDisplay
virtual int FromDisplay(int aValue, COORD_TYPES_T aCoordType) const
Definition
origin_transforms.cpp:53
ORIGIN_TRANSFORMS::FromDisplayRel
T FromDisplayRel(const T &aValue) const
Definition
origin_transforms.h:100
ORIGIN_TRANSFORMS::ToDisplayRel
T ToDisplayRel(const T &aValue) const
Definition
origin_transforms.h:80
ORIGIN_TRANSFORMS::ToDisplayAbs
T ToDisplayAbs(const T &aValue) const
Definition
origin_transforms.h:70
ORIGIN_TRANSFORMS::ToDisplay
virtual int ToDisplay(int aValue, COORD_TYPES_T aCoordType) const
Definition
origin_transforms.cpp:29
ORIGIN_TRANSFORMS::COORD_TYPES_T
COORD_TYPES_T
The supported Display Origin Transform types.
Definition
origin_transforms.h:49
ORIGIN_TRANSFORMS::FromDisplayAbs
T FromDisplayAbs(const T &aValue) const
Definition
origin_transforms.h:90
PCB_BASE_FRAME
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
Definition
pcb_base_frame.h:93
PCB_ORIGIN_TRANSFORMS::ToDisplayRelY
T ToDisplayRelY(T aInternalValue) const
Definition
pcb_origin_transforms.h:98
PCB_ORIGIN_TRANSFORMS::ToDisplayAbsX
T ToDisplayAbsX(T aInternalValue) const
Definition
pcb_origin_transforms.h:119
PCB_ORIGIN_TRANSFORMS::~PCB_ORIGIN_TRANSFORMS
~PCB_ORIGIN_TRANSFORMS()=default
PCB_ORIGIN_TRANSFORMS::PCB_ORIGIN_TRANSFORMS
PCB_ORIGIN_TRANSFORMS(PCB_BASE_FRAME &aPcbBaseFrame)
Definition
pcb_origin_transforms.cpp:33
PCB_ORIGIN_TRANSFORMS::invertYAxis
bool invertYAxis() const
Definition
pcb_origin_transforms.cpp:149
PCB_ORIGIN_TRANSFORMS::FromDisplay
virtual long long int FromDisplay(long long int aValue, COORD_TYPES_T aCoordType) const override
Definition
pcb_origin_transforms.cpp:83
PCB_ORIGIN_TRANSFORMS::FromDisplayRel
T FromDisplayRel(T aDisplayValue) const
Definition
pcb_origin_transforms.h:179
PCB_ORIGIN_TRANSFORMS::invertXAxis
bool invertXAxis() const
Definition
pcb_origin_transforms.cpp:140
PCB_ORIGIN_TRANSFORMS::ToDisplayAbs
T ToDisplayAbs(T aInternalValue) const
Definition
pcb_origin_transforms.h:146
PCB_ORIGIN_TRANSFORMS::m_pcbBaseFrame
const PCB_BASE_FRAME & m_pcbBaseFrame
Definition
pcb_origin_transforms.h:197
PCB_ORIGIN_TRANSFORMS::FromDisplayRelY
T FromDisplayRelY(T aDisplayValue) const
Definition
pcb_origin_transforms.h:110
PCB_ORIGIN_TRANSFORMS::ToDisplayRel
T ToDisplayRel(T aInternalValue) const
Definition
pcb_origin_transforms.h:168
PCB_ORIGIN_TRANSFORMS::FromDisplayAbs
T FromDisplayAbs(T aDisplayValue) const
Definition
pcb_origin_transforms.h:157
PCB_ORIGIN_TRANSFORMS::FromDisplayAbsY
T FromDisplayAbsY(T aDisplayValue) const
Definition
pcb_origin_transforms.h:137
PCB_ORIGIN_TRANSFORMS::FromDisplayAbsX
T FromDisplayAbsX(T aDisplayValue) const
Definition
pcb_origin_transforms.h:131
PCB_ORIGIN_TRANSFORMS::getUserYOrigin
int getUserYOrigin() const
Definition
pcb_origin_transforms.cpp:134
PCB_ORIGIN_TRANSFORMS::ToDisplayRelX
T ToDisplayRelX(T aInternalValue) const
Transform a 2-D coordinate point referenced to the internal origin to the equivalent point referenced...
Definition
pcb_origin_transforms.h:92
PCB_ORIGIN_TRANSFORMS::ToDisplayAbsY
T ToDisplayAbsY(T aInternalValue) const
Definition
pcb_origin_transforms.h:125
PCB_ORIGIN_TRANSFORMS::ToDisplay
virtual long long int ToDisplay(long long int aValue, COORD_TYPES_T aCoordType) const override
Definition
pcb_origin_transforms.cpp:38
PCB_ORIGIN_TRANSFORMS::getUserXOrigin
int getUserXOrigin() const
Definition
pcb_origin_transforms.cpp:128
PCB_ORIGIN_TRANSFORMS::FromDisplayRelX
T FromDisplayRelX(T aDisplayValue) const
Definition
pcb_origin_transforms.h:104
origin_transforms.h
TRANSLINE_PARAMETERS::T
@ T
Definition
transline_calculation_base.h:38
src
pcbnew
pcb_origin_transforms.h
Generated on Tue Nov 4 2025 00:06:53 for KiCad PCB EDA Suite by
1.13.2