KiCad PCB EDA Suite
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-2021 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 LIB_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{
63};
64
65
66namespace KIGFX
67{
68 class VIEW_GROUP;
69
70 namespace PREVIEW
71 {
72 class SELECTION_AREA;
73 };
74
75class SCH_VIEW : public KIGFX::VIEW
76{
77public:
78 // Note: aFrame is used to know the sheet path name when drawing the drawing sheet.
79 // It can be null.
80 SCH_VIEW( bool aIsDynamic, SCH_BASE_FRAME* aFrame );
81 ~SCH_VIEW();
82
83 void Cleanup();
84
85 void DisplaySheet( const SCH_SCREEN* aScreen );
86 void DisplaySymbol( LIB_SYMBOL* aSymbol );
87
88 // Call it to set new draw area limits (max working and draw area size)
89 void ResizeSheetWorkingArea( const SCH_SCREEN *aScreen );
90
91 void SetScale( double aScale, VECTOR2D aAnchor = { 0, 0 } ) override;
92
96 void ClearHiddenFlags();
97
98 void HideDrawingSheet();
99
101
102private:
103 SCH_BASE_FRAME* m_frame; // The frame using this view. Can be null. Used mainly
104 // to know the sheet path name when drawing the drawing sheet
105
106 std::unique_ptr<DS_PROXY_VIEW_ITEM> m_drawingSheet;
107};
108
109}; // namespace
110
111#endif
std::unique_ptr< DS_PROXY_VIEW_ITEM > m_drawingSheet
Definition: sch_view.h:106
void DisplaySymbol(LIB_SYMBOL *aSymbol)
Definition: sch_view.cpp:131
void ResizeSheetWorkingArea(const SCH_SCREEN *aScreen)
Definition: sch_view.cpp:82
DS_PROXY_VIEW_ITEM * GetDrawingSheet() const
Definition: sch_view.h:100
void DisplaySheet(const SCH_SCREEN *aScreen)
Definition: sch_view.cpp:92
void SetScale(double aScale, VECTOR2D aAnchor={ 0, 0 }) override
Set the scaling factor, zooming around a given anchor point.
Definition: sch_view.cpp:72
void HideDrawingSheet()
Definition: sch_view.cpp:188
void Cleanup()
Definition: sch_view.cpp:64
SCH_BASE_FRAME * m_frame
Definition: sch_view.h:103
SCH_VIEW(bool aIsDynamic, SCH_BASE_FRAME *aFrame)
Definition: sch_view.cpp:46
void ClearHiddenFlags()
Clear the hide flag of all items in the view.
Definition: sch_view.cpp:181
Hold a (potentially large) number of VIEW_ITEMs and renders them on a graphics device provided by the...
Definition: view.h:69
Define a library symbol object.
Definition: lib_symbol.h:98
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:55
@ LAYER_DRAWINGSHEET
drawingsheet frame and titleblock
Definition: layer_ids.h:217
@ LAYER_DRAW_BITMAPS
to handle and draw images bitmaps
Definition: layer_ids.h:223
@ LAYER_GP_OVERLAY
general purpose overlay
Definition: layer_ids.h:218
@ LAYER_SELECT_OVERLAY
currently selected items overlay
Definition: layer_ids.h:219
@ LAYER_DANGLING
Definition: layer_ids.h:368
@ LAYER_ERC_WARN
Definition: layer_ids.h:369
@ LAYER_DEVICE
Definition: layer_ids.h:357
@ LAYER_SHEET_BACKGROUND
Definition: layer_ids.h:373
@ LAYER_ERC_EXCLUSION
Definition: layer_ids.h:371
@ LAYER_HIERLABEL
Definition: layer_ids.h:349
@ LAYER_GLOBLABEL
Definition: layer_ids.h:348
@ LAYER_WIRE
Definition: layer_ids.h:344
@ LAYER_NOTES
Definition: layer_ids.h:358
@ LAYER_ERC_ERR
Definition: layer_ids.h:370
@ LAYER_VALUEPART
Definition: layer_ids.h:353
@ LAYER_BUS
Definition: layer_ids.h:345
@ LAYER_FIELDS
Definition: layer_ids.h:354
@ LAYER_DEVICE_BACKGROUND
Definition: layer_ids.h:372
@ LAYER_LOCLABEL
Definition: layer_ids.h:347
@ LAYER_JUNCTION
Definition: layer_ids.h:346
@ LAYER_REFERENCEPART
Definition: layer_ids.h:352
@ LAYER_NETCLASS_REFS
Definition: layer_ids.h:356
@ LAYER_NOTES_BACKGROUND
Definition: layer_ids.h:360
@ LAYER_SHEET
Definition: layer_ids.h:362
@ LAYER_SELECTION_SHADOWS
Definition: layer_ids.h:381
@ LAYER_INTERSHEET_REFS
Definition: layer_ids.h:355
@ LAYER_BUS_JUNCTION
Definition: layer_ids.h:384
@ LAYER_NOCONNECT
Definition: layer_ids.h:367
The Cairo implementation of the graphics abstraction layer.
Definition: color4d.cpp:266
constexpr double SCH_WORLD_UNIT(1e-7/0.0254)
static const int SCH_LAYER_ORDER[]
Definition: sch_view.h:45