Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
magicseteditor
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
magicseteditor
Commits
8e590ab3
Commit
8e590ab3
authored
Aug 06, 2008
by
twanvl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleaned up handling of what things should be drawn by using the DrawWhat enumeration type.
parent
2a0933a1
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
113 additions
and
82 deletions
+113
-82
src/data/draw_what.hpp
src/data/draw_what.hpp
+29
-0
src/gui/control/card_editor.cpp
src/gui/control/card_editor.cpp
+14
-16
src/gui/control/card_editor.hpp
src/gui/control/card_editor.hpp
+2
-5
src/gui/control/native_look_editor.hpp
src/gui/control/native_look_editor.hpp
+0
-1
src/gui/control/text_ctrl.hpp
src/gui/control/text_ctrl.hpp
+0
-1
src/gui/value/text.cpp
src/gui/value/text.cpp
+4
-3
src/mse.vcproj
src/mse.vcproj
+3
-0
src/render/card/viewer.cpp
src/render/card/viewer.cpp
+15
-7
src/render/card/viewer.hpp
src/render/card/viewer.hpp
+6
-14
src/render/text/compound.cpp
src/render/text/compound.cpp
+13
-11
src/render/text/element.hpp
src/render/text/element.hpp
+1
-8
src/render/text/viewer.cpp
src/render/text/viewer.cpp
+2
-0
src/render/value/image.cpp
src/render/value/image.cpp
+5
-5
src/render/value/text.cpp
src/render/value/text.cpp
+4
-8
src/render/value/viewer.cpp
src/render/value/viewer.cpp
+13
-3
src/render/value/viewer.hpp
src/render/value/viewer.hpp
+2
-0
No files found.
src/data/draw_what.hpp
0 → 100644
View file @
8e590ab3
//+----------------------------------------------------------------------------+
//| Description: Magic Set Editor - Program to make Magic (tm) cards |
//| Copyright: (C) 2001 - 2008 Twan van Laarhoven and "coppro" |
//| License: GNU General Public License 2 or later (see file COPYING) |
//+----------------------------------------------------------------------------+
#ifndef HEADER_DATA_DRAW_WHAT
#define HEADER_DATA_DRAW_WHAT
// ----------------------------------------------------------------------------- : Includes
#include <util/prec.hpp>
// ----------------------------------------------------------------------------- : DrawWhat
/// What should be drawn?
enum
DrawWhat
{
DRAW_NOTHING
=
0x00
,
DRAW_NORMAL
=
0x01
// draw normal things, like the text
,
DRAW_BORDERS
=
0x10
// draw editor stuff, such as borders/lines, can be disabled.
,
DRAW_BOXES
=
0x20
// draw editor stuff, such as borders/lines, can be disabled.
,
DRAW_EDITING
=
0x40
// draw other editor stuff, can be disabled.
,
DRAW_ERRORS
=
0x80
// draw error indicators, can't be disabled
,
DRAW_ACTIVE
=
0x100
// draw active editor stuff, such as hidden separators and atom highlights
,
DRAW_NATIVELOOK
=
0x200
// use a native look
};
// ----------------------------------------------------------------------------- : EOF
#endif
src/gui/control/card_editor.cpp
View file @
8e590ab3
...
...
@@ -39,26 +39,24 @@ ValueViewerP DataEditor::makeViewer(const StyleP& style) {
// ----------------------------------------------------------------------------- : Utility for ValueViewers
bool
DataEditor
::
drawBorders
()
const
{
return
!
nativeLook
()
&&
settings
.
stylesheetSettingsFor
(
set
->
stylesheetFor
(
card
)).
card_borders
();
}
bool
DataEditor
::
drawEditing
()
const
{
return
nativeLook
()
||
settings
.
stylesheetSettingsFor
(
set
->
stylesheetFor
(
card
)).
card_draw_editing
();
}
bool
DataEditor
::
drawFocus
()
const
{
return
FindFocus
()
==
this
;
DrawWhat
DataEditor
::
drawWhat
(
const
ValueViewer
*
viewer
)
const
{
int
what
=
DRAW_NORMAL
|
DRAW_ACTIVE
*
viewerIsCurrent
(
viewer
);
if
(
nativeLook
())
{
what
|=
DRAW_BOXES
|
DRAW_EDITING
|
DRAW_NATIVELOOK
;
}
else
{
StyleSheetSettings
&
ss
=
settings
.
stylesheetSettingsFor
(
set
->
stylesheetFor
(
card
));
what
|=
DRAW_BORDERS
*
ss
.
card_borders
()
|
(
DRAW_BOXES
|
DRAW_EDITING
)
*
ss
.
card_draw_editing
()
|
DRAW_ERRORS
;
}
return
(
DrawWhat
)
what
;
}
wxPen
DataEditor
::
borderPen
(
bool
active
)
const
{
return
active
?
wxPen
(
Color
(
0
,
128
,
255
),
1
,
wxSOLID
)
:
wxPen
(
Color
(
128
,
128
,
128
),
1
,
wxDOT
);
bool
DataEditor
::
viewerIsCurrent
(
const
ValueViewer
*
viewer
)
const
{
return
viewer
==
current_viewer
&&
FindFocus
()
==
this
;
}
ValueViewer
*
DataEditor
::
focusedViewer
()
const
{
return
FindFocus
()
==
this
?
current_viewer
:
nullptr
;
}
void
DataEditor
::
addAction
(
Action
*
action
)
{
set
->
actions
.
addAction
(
action
);
...
...
src/gui/control/card_editor.hpp
View file @
8e590ab3
...
...
@@ -24,11 +24,8 @@ class DataEditor : public CardViewer {
// --------------------------------------------------- : Utility for ValueViewers/Editors
virtual
bool
drawBorders
()
const
;
virtual
bool
drawEditing
()
const
;
virtual
bool
drawFocus
()
const
;
virtual
wxPen
borderPen
(
bool
active
)
const
;
virtual
ValueViewer
*
focusedViewer
()
const
;
virtual
DrawWhat
drawWhat
(
const
ValueViewer
*
)
const
;
virtual
bool
viewerIsCurrent
(
const
ValueViewer
*
)
const
;
virtual
void
addAction
(
Action
*
action
);
inline
SetP
getSetForActions
()
{
return
set
;
}
...
...
src/gui/control/native_look_editor.hpp
View file @
8e590ab3
...
...
@@ -23,7 +23,6 @@ class NativeLookEditor : public DataEditor {
/// Uses a native look
virtual
bool
nativeLook
()
const
{
return
true
;
}
virtual
bool
drawBorders
()
const
{
return
false
;
}
virtual
Rotation
getRotation
()
const
;
virtual
void
draw
(
DC
&
dc
);
...
...
src/gui/control/text_ctrl.hpp
View file @
8e590ab3
...
...
@@ -50,7 +50,6 @@ class TextCtrl : public DataEditor {
/// Uses a native look
virtual
bool
nativeLook
()
const
{
return
true
;
}
virtual
bool
drawBorders
()
const
{
return
false
;
}
virtual
Rotation
getRotation
()
const
;
virtual
void
draw
(
DC
&
dc
);
...
...
src/gui/value/text.cpp
View file @
8e590ab3
...
...
@@ -1318,7 +1318,8 @@ void TextValueEditor::redrawWordListIndicators(bool toggling_dropdown) {
void
TextValueEditor
::
drawWordListIndicators
(
RotatedDC
&
dc
,
bool
redrawing
)
{
if
(
word_lists
.
empty
())
return
;
bool
current
=
isCurrent
();
DrawWhat
what
=
viewer
.
drawWhat
(
this
);
bool
current
=
what
&
DRAW_ACTIVE
;
// Draw lines around fields
FOR_EACH
(
wl
,
word_lists
)
{
RealRect
&
r
=
wl
->
rect
;
...
...
@@ -1345,7 +1346,7 @@ void TextValueEditor::drawWordListIndicators(RotatedDC& dc, bool redrawing) {
if
(
!
redrawing
)
{
wl
->
behind
=
dc
.
GetBackground
(
RealRect
(
r
.
right
(),
r
.
top
()
-
1
,
10
,
r
.
height
+
3
));
}
if
(
current
||
viewer
.
drawEditing
(
))
{
if
(
what
&
(
DRAW_ACTIVE
|
DRAW_BOXES
))
{
// draw rectangle around value
dc
.
SetBrush
(
*
wxTRANSPARENT_BRUSH
);
dc
.
DrawRectangle
(
r
.
move
(
-
1
,
-
1
,
2
,
2
));
...
...
@@ -1368,7 +1369,7 @@ void TextValueEditor::drawWordListIndicators(RotatedDC& dc, bool redrawing) {
small
=
(
wl
.
get
()
!=
hovered_words
);
}
if
(
small
)
{
if
(
viewer
.
drawEditing
()
)
{
if
(
what
&
DRAW_BOXES
)
{
dc
.
DrawRectangle
(
RealRect
(
r
.
right
(),
r
.
top
()
-
1
,
2
,
r
.
height
+
2
));
}
}
else
{
...
...
src/mse.vcproj
View file @
8e590ab3
...
...
@@ -1853,6 +1853,9 @@
<Filter
Name=
"aux"
Filter=
""
>
<File
RelativePath=
".\data\draw_what.hpp"
>
</File>
<File
RelativePath=
".\data\export_template.cpp"
>
</File>
...
...
src/render/card/viewer.cpp
View file @
8e590ab3
...
...
@@ -96,13 +96,21 @@ void DataViewer::updateStyles(bool only_content_dependent) {
// ----------------------------------------------------------------------------- : Utility for ValueViewers
bool
DataViewer
::
nativeLook
()
const
{
return
false
;
}
bool
DataViewer
::
drawBorders
()
const
{
return
false
;
}
bool
DataViewer
::
drawEditing
()
const
{
return
false
;
}
bool
DataViewer
::
drawFocus
()
const
{
return
false
;
}
wxPen
DataViewer
::
borderPen
(
bool
)
const
{
return
wxPen
();
}
ValueViewer
*
DataViewer
::
focusedViewer
()
const
{
return
nullptr
;
}
Context
&
DataViewer
::
getContext
()
const
{
return
set
->
getContext
(
card
);
}
bool
DataViewer
::
nativeLook
()
const
{
return
false
;
}
DrawWhat
DataViewer
::
drawWhat
(
const
ValueViewer
*
)
const
{
return
(
DrawWhat
)(
DRAW_NORMAL
|
nativeLook
()
*
DRAW_NATIVELOOK
);
}
bool
DataViewer
::
viewerIsCurrent
(
const
ValueViewer
*
)
const
{
return
false
;
}
Context
&
DataViewer
::
getContext
()
const
{
return
set
->
getContext
(
card
);
}
Rotation
DataViewer
::
getRotation
()
const
{
if
(
!
stylesheet
)
stylesheet
=
set
->
stylesheet
;
...
...
src/render/card/viewer.hpp
View file @
8e590ab3
...
...
@@ -12,6 +12,7 @@
#include <util/prec.hpp>
#include <util/rotation.hpp>
#include <data/set.hpp>
#include <data/draw_what.hpp>
DECLARE_POINTER_TYPE
(
Style
);
DECLARE_POINTER_TYPE
(
ValueViewer
);
...
...
@@ -39,20 +40,11 @@ class DataViewer : public SetView {
/// Should the ValueViewers use a platform native look and feel?
/** false by default, can be overloaded */
virtual
bool
nativeLook
()
const
;
/// Should field borders be drawn?
/** false by default, can be overloaded */
virtual
bool
drawBorders
()
const
;
/// Should editing specific things be drawn?
/** false by default, can be overloaded */
virtual
bool
drawEditing
()
const
;
/// Should focus only editing specific things be drawn?
/** false by default, can be overloaded */
virtual
bool
drawFocus
()
const
;
/// Pens for drawing field borders (only called if drawBorders())
virtual
wxPen
borderPen
(
bool
active
)
const
;
/// The viewer that is currently focused, may be null
/** null by default, can be overloaded */
virtual
ValueViewer
*
focusedViewer
()
const
;
/// Which things should be drawn for the given viewer?
/** can be overloaded */
virtual
DrawWhat
drawWhat
(
const
ValueViewer
*
)
const
;
/// Is the given viewer currently selected?
virtual
bool
viewerIsCurrent
(
const
ValueViewer
*
)
const
;
/// Get a script context to use for scripts in the viewers
Context
&
getContext
()
const
;
/// The rotation to use
...
...
src/render/text/compound.cpp
View file @
8e590ab3
...
...
@@ -39,6 +39,7 @@ void AtomTextElement::draw(RotatedDC& dc, double scale, const RealRect& rect, co
void
ErrorTextElement
::
draw
(
RotatedDC
&
dc
,
double
scale
,
const
RealRect
&
rect
,
const
double
*
xs
,
DrawWhat
what
,
size_t
start
,
size_t
end
)
const
{
// Draw wavy underline
if
(
what
&
DRAW_ERRORS
)
{
dc
.
SetPen
(
*
wxRED_PEN
);
RealPoint
pos
=
rect
.
bottomLeft
()
-
dc
.
trInvS
(
RealSize
(
0
,
2
));
RealSize
dx
(
dc
.
trInvS
(
2
),
0
),
dy
(
0
,
dc
.
trInvS
(
1
));
...
...
@@ -51,6 +52,7 @@ void ErrorTextElement::draw(RotatedDC& dc, double scale, const RealRect& rect, c
// final piece
dc
.
DrawLine
(
pos
-
dy
,
pos
+
dx
/
2
);
}
}
// Draw the contents
CompoundTextElement
::
draw
(
dc
,
scale
,
rect
,
xs
,
what
,
start
,
end
);
}
src/render/text/element.hpp
View file @
8e590ab3
...
...
@@ -13,6 +13,7 @@
#include <util/rotation.hpp>
#include <util/real_point.hpp>
#include <data/font.hpp>
#include <data/draw_what.hpp>
DECLARE_POINTER_TYPE
(
TextElement
);
DECLARE_POINTER_TYPE
(
Font
);
...
...
@@ -22,14 +23,6 @@ class SymbolFontRef;
// ----------------------------------------------------------------------------- : TextElement
/// What should be drawn?
enum
DrawWhat
{
DRAW_NOTHING
=
0x00
,
DRAW_NORMAL
=
0x01
// draw normal things, like the text
,
DRAW_BORDERS
=
0x02
// draw editor stuff, such as borders/lines
,
DRAW_ACTIVE
=
0x04
// draw active editor stuff, such as hidden separators and atom highlights
};
/// Information on a linebreak
enum
LineBreak
{
BREAK_NO
// no line break ever
...
...
src/render/text/viewer.cpp
View file @
8e590ab3
...
...
@@ -70,6 +70,8 @@ TextViewer::~TextViewer() {}
void
TextViewer
::
draw
(
RotatedDC
&
dc
,
const
TextStyle
&
style
,
DrawWhat
what
)
{
assert
(
!
lines
.
empty
());
// draw anything?
if
(
what
==
DRAW_NOTHING
)
return
;
// separator lines?
// do this first, so pen is still set from drawing the field border
if
(
what
&
DRAW_BORDERS
)
{
...
...
src/render/value/image.cpp
View file @
8e590ab3
...
...
@@ -18,6 +18,7 @@ DECLARE_TYPEOF_COLLECTION(wxPoint);
IMPLEMENT_VALUE_VIEWER
(
Image
);
void
ImageValueViewer
::
draw
(
RotatedDC
&
dc
)
{
DrawWhat
what
=
viewer
.
drawWhat
(
this
);
// reset?
int
w
=
max
(
0
,(
int
)
dc
.
trX
(
style
().
width
)),
h
=
max
(
0
,(
int
)
dc
.
trY
(
style
().
height
));
int
a
=
dc
.
trAngle
(
0
);
//% TODO : Add getAngle()?
...
...
@@ -45,8 +46,8 @@ void ImageValueViewer::draw(RotatedDC& dc) {
if
(
!
image
.
Ok
()
&&
style
().
default_image
.
isReady
())
{
image
=
style
().
default_image
.
generate
(
GeneratedImage
::
Options
(
w
,
h
,
&
getStylePackage
(),
&
getLocalPackage
()));
is_default
=
true
;
if
(
viewer
.
drawEditing
()
)
{
bitmap
=
imagePlaceholder
(
dc
,
w
,
h
,
image
,
viewer
.
drawEditing
()
);
if
(
what
&
DRAW_EDITING
)
{
bitmap
=
imagePlaceholder
(
dc
,
w
,
h
,
image
,
what
&
DRAW_EDITING
);
if
(
alpha_mask
||
a
)
{
image
=
bitmap
.
ConvertToImage
();
// we need to convert back to an image
}
else
{
...
...
@@ -57,7 +58,7 @@ void ImageValueViewer::draw(RotatedDC& dc) {
// checkerboard placeholder
if
(
!
image
.
Ok
()
&&
!
bitmap
.
Ok
()
&&
style
().
width
>
40
)
{
// placeholder bitmap
bitmap
=
imagePlaceholder
(
dc
,
w
,
h
,
wxNullImage
,
viewer
.
drawEditing
()
);
bitmap
=
imagePlaceholder
(
dc
,
w
,
h
,
wxNullImage
,
what
&
DRAW_EDITING
);
if
(
alpha_mask
||
a
)
{
// we need to convert back to an image
image
=
bitmap
.
ConvertToImage
();
...
...
@@ -83,8 +84,7 @@ void ImageValueViewer::draw(RotatedDC& dc) {
void
ImageValueViewer
::
drawFieldBorder
(
RotatedDC
&
dc
)
{
if
(
!
alpha_mask
)
{
ValueViewer
::
drawFieldBorder
(
dc
);
}
else
if
(
viewer
.
drawBorders
()
&&
field
().
editable
)
{
dc
.
SetPen
(
viewer
.
borderPen
(
isCurrent
()));
}
else
if
(
setFieldBorderPen
(
dc
))
{
dc
.
SetBrush
(
*
wxTRANSPARENT_BRUSH
);
vector
<
wxPoint
>
points
;
alpha_mask
->
convexHull
(
points
);
...
...
src/render/value/text.cpp
View file @
8e590ab3
...
...
@@ -32,14 +32,10 @@ void TextValueViewer::draw(RotatedDC& dc) {
v
.
prepare
(
dc
,
value
().
value
(),
style
(),
viewer
.
getContext
());
dc
.
setStretch
(
getStretch
());
}
if
(
viewer
.
drawFocus
()
&&
isCurrent
())
{
v
.
draw
(
dc
,
style
(),
DRAW_ACTIVE
);
}
if
(
viewer
.
drawBorders
())
dc
.
SetPen
(
viewer
.
borderPen
(
isCurrent
()));
v
.
draw
(
dc
,
style
(),
(
DrawWhat
)(
DRAW_NORMAL
|
(
viewer
.
drawBorders
()
?
DRAW_BORDERS
:
0
)
));
DrawWhat
what
=
viewer
.
drawWhat
(
this
);
v
.
draw
(
dc
,
style
(),
(
DrawWhat
)(
what
&
DRAW_ACTIVE
));
setFieldBorderPen
(
dc
);
v
.
draw
(
dc
,
style
(),
(
DrawWhat
)(
what
&
~
DRAW_ACTIVE
));
}
void
TextValueViewer
::
onValueChange
()
{
...
...
src/render/value/viewer.cpp
View file @
8e590ab3
...
...
@@ -40,9 +40,19 @@ Rotation ValueViewer::getRotation() const {
return
Rotation
(
getStyle
()
->
angle
,
getStyle
()
->
getExternalRect
(),
1.0
,
getStretch
());
}
bool
ValueViewer
::
setFieldBorderPen
(
RotatedDC
&
dc
)
{
if
(
!
getField
()
->
editable
)
return
false
;
DrawWhat
what
=
viewer
.
drawWhat
(
this
);
if
(
!
(
what
&
DRAW_BORDERS
))
return
false
;
dc
.
SetPen
(
(
what
&
DRAW_ACTIVE
)
?
wxPen
(
Color
(
0
,
128
,
255
),
1
,
wxSOLID
)
:
wxPen
(
Color
(
128
,
128
,
128
),
1
,
wxDOT
)
);
return
true
;
}
void
ValueViewer
::
drawFieldBorder
(
RotatedDC
&
dc
)
{
if
(
viewer
.
drawBorders
()
&&
getField
()
->
editable
)
{
dc
.
SetPen
(
viewer
.
borderPen
(
isCurrent
()));
if
(
setFieldBorderPen
(
dc
))
{
dc
.
SetBrush
(
*
wxTRANSPARENT_BRUSH
);
dc
.
DrawRectangle
(
dc
.
getInternalRect
().
grow
(
dc
.
trInvS
(
1
)));
}
...
...
@@ -56,7 +66,7 @@ bool ValueViewer::nativeLook() const {
return
viewer
.
nativeLook
();
}
bool
ValueViewer
::
isCurrent
()
const
{
return
viewer
.
focusedViewer
()
==
this
;
return
viewer
.
viewerIsCurrent
(
this
)
;
}
void
ValueViewer
::
onStyleChange
(
int
changes
)
{
...
...
src/render/value/viewer.hpp
View file @
8e590ab3
...
...
@@ -75,6 +75,8 @@ class ValueViewer : public StyleListener {
protected:
ValueP
valueP
;
///< The value we are currently viewing
/// Set the pen for drawing the border, returns true if a border needs to be drawn
bool
setFieldBorderPen
(
RotatedDC
&
dc
);
/// Draws a border around the field
void
drawFieldBorder
(
RotatedDC
&
dc
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment