KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sch_view.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) 2018-2023 KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#ifndef SCH_VIEW_H_
25#define SCH_VIEW_H_
26
27#include <layer_ids.h>
28#include <math/vector2d.h>
29#include <view/view.h>
30
31#include <memory>
32#include <vector>
33
34class SCH_SHEET;
35class SCH_SCREEN;
36class LIB_SYMBOL;
37class SCH_PIN;
38class SCH_BASE_FRAME;
40
41
42// Eeschema 100nm as the internal units
43constexpr double SCH_WORLD_UNIT ( 1e-7 / 0.0254 );
44
45static const int SCH_LAYER_ORDER[] =
46{
66};
67
68
69namespace KIGFX
70{
71 class VIEW_GROUP;
72
73 namespace PREVIEW
74 {
75 class SELECTION_AREA;
76 };
77
78class SCH_VIEW : public KIGFX::VIEW
79{
80public:
81 // Note: aFrame is used to know the sheet path name when drawing the drawing sheet.
82 // It can be null.
83 SCH_VIEW( bool aIsDynamic, SCH_BASE_FRAME* aFrame );
84 ~SCH_VIEW();
85
86 void Cleanup();
87
88 void DisplaySheet( const SCH_SCREEN* aScreen );
89 void DisplaySymbol( LIB_SYMBOL* aSymbol );
90
91 // Call it to set new draw area limits (max working and draw area size)
92 void ResizeSheetWorkingArea( const SCH_SCREEN *aScreen );
93
94 void SetScale( double aScale, VECTOR2D aAnchor = { 0, 0 } ) override;
95
99 void ClearHiddenFlags();
100
101 void HideDrawingSheet();
102
104
105private:
106 SCH_BASE_FRAME* m_frame; // The frame using this view. Can be null. Used mainly
107 // to know the sheet path name when drawing the drawing sheet
108
109 std::unique_ptr<DS_PROXY_VIEW_ITEM> m_drawingSheet;
110};
111
112}; // namespace
113
114#endif
std::unique_ptr< DS_PROXY_VIEW_ITEM > m_drawingSheet
Definition: sch_view.h:109
void DisplaySymbol(LIB_SYMBOL *aSymbol)
Definition: sch_view.cpp:138
void ResizeSheetWorkingArea(const SCH_SCREEN *aScreen)
Definition: sch_view.cpp:85
DS_PROXY_VIEW_ITEM * GetDrawingSheet() const
Definition: sch_view.h:103
void DisplaySheet(const SCH_SCREEN *aScreen)
Definition: sch_view.cpp:95
void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 }) override
Set the scaling factor, zooming around a given anchor point.
Definition: sch_view.cpp:75
void HideDrawingSheet()
Definition: sch_view.cpp:191
void Cleanup()
Definition: sch_view.cpp:67
SCH_BASE_FRAME * m_frame
Definition: sch_view.h:106
void ClearHiddenFlags()
Clear the hide flag of all items in the view.
Definition: sch_view.cpp:179
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:68
Define a library symbol object.
Definition: lib_symbol.h:78
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:57
@ LAYER_DRAWINGSHEET
drawingsheet frame and titleblock
Definition: layer_ids.h:218
@ LAYER_DRAW_BITMAPS
to handle and draw images bitmaps
Definition: layer_ids.h:224
@ LAYER_GP_OVERLAY
general purpose overlay
Definition: layer_ids.h:219
@ LAYER_SELECT_OVERLAY
currently selected items overlay
Definition: layer_ids.h:220
@ LAYER_DANGLING
Definition: layer_ids.h:381
@ LAYER_SHEETNAME
Definition: layer_ids.h:376
@ LAYER_ERC_WARN
Definition: layer_ids.h:383
@ LAYER_SHEETLABEL
Definition: layer_ids.h:379
@ LAYER_PINNUM
Definition: layer_ids.h:362
@ LAYER_RULE_AREAS
Definition: layer_ids.h:369
@ LAYER_DEVICE
Definition: layer_ids.h:370
@ LAYER_SHEET_BACKGROUND
Definition: layer_ids.h:388
@ LAYER_ERC_EXCLUSION
Definition: layer_ids.h:385
@ LAYER_HIERLABEL
Definition: layer_ids.h:361
@ LAYER_PINNAM
Definition: layer_ids.h:363
@ LAYER_PRIVATE_NOTES
Definition: layer_ids.h:372
@ LAYER_GLOBLABEL
Definition: layer_ids.h:360
@ LAYER_WIRE
Definition: layer_ids.h:356
@ LAYER_NOTES
Definition: layer_ids.h:371
@ LAYER_ERC_ERR
Definition: layer_ids.h:384
@ LAYER_VALUEPART
Definition: layer_ids.h:365
@ LAYER_BUS
Definition: layer_ids.h:357
@ LAYER_FIELDS
Definition: layer_ids.h:366
@ LAYER_DEVICE_BACKGROUND
Definition: layer_ids.h:387
@ LAYER_LOCLABEL
Definition: layer_ids.h:359
@ LAYER_JUNCTION
Definition: layer_ids.h:358
@ LAYER_SHEETFIELDS
Definition: layer_ids.h:378
@ LAYER_REFERENCEPART
Definition: layer_ids.h:364
@ LAYER_NETCLASS_REFS
Definition: layer_ids.h:368
@ LAYER_NOTES_BACKGROUND
Definition: layer_ids.h:373
@ LAYER_OP_CURRENTS
Definition: layer_ids.h:404
@ LAYER_SHEET
Definition: layer_ids.h:375
@ LAYER_SELECTION_SHADOWS
Definition: layer_ids.h:397
@ LAYER_INTERSHEET_REFS
Definition: layer_ids.h:367
@ LAYER_OP_VOLTAGES
Definition: layer_ids.h:403
@ LAYER_SHEETFILENAME
Definition: layer_ids.h:377
@ LAYER_BUS_JUNCTION
Definition: layer_ids.h:400
@ LAYER_NOCONNECT
Definition: layer_ids.h:380
The Cairo implementation of the graphics abstraction layer.
Definition: color4d.cpp:247
constexpr double SCH_WORLD_UNIT(1e-7/0.0254)
static const int SCH_LAYER_ORDER[]
Definition: sch_view.h:45