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
3f7b0bae
Commit
3f7b0bae
authored
Dec 09, 2006
by
twanvl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added 'symbol_variation' script function
parent
e023ad98
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
110 additions
and
37 deletions
+110
-37
src/data/stylesheet.cpp
src/data/stylesheet.cpp
+13
-0
src/data/stylesheet.hpp
src/data/stylesheet.hpp
+3
-0
src/data/symbol.cpp
src/data/symbol.cpp
+20
-0
src/data/symbol.hpp
src/data/symbol.hpp
+2
-0
src/gui/symbol/window.cpp
src/gui/symbol/window.cpp
+0
-20
src/script/image.cpp
src/script/image.cpp
+46
-6
src/script/value.hpp
src/script/value.hpp
+25
-10
src/util/index_map.hpp
src/util/index_map.hpp
+1
-1
No files found.
src/data/stylesheet.cpp
View file @
3f7b0bae
...
@@ -45,6 +45,19 @@ InputStreamP StyleSheet::openIconFile() {
...
@@ -45,6 +45,19 @@ InputStreamP StyleSheet::openIconFile() {
}
}
}
}
StyleP
StyleSheet
::
styleFor
(
const
FieldP
&
field
)
{
if
(
card_style
.
containsKey
(
field
))
{
return
card_style
[
field
];
}
else
if
(
set_info_style
.
containsKey
(
field
))
{
return
set_info_style
[
field
];
}
else
if
(
styling_style
.
containsKey
(
field
))
{
return
styling_style
[
field
];
}
else
{
throw
InternalError
(
_
(
"Can not find styling for field '"
)
+
field
->
name
+
_
(
"'in stylesheet"
));
}
}
IMPLEMENT_REFLECTION
(
StyleSheet
)
{
IMPLEMENT_REFLECTION
(
StyleSheet
)
{
// < 0.3.0 didn't use card_ prefix
// < 0.3.0 didn't use card_ prefix
tag
.
addAlias
(
300
,
_
(
"width"
),
_
(
"card width"
));
tag
.
addAlias
(
300
,
_
(
"width"
),
_
(
"card width"
));
...
...
src/data/stylesheet.hpp
View file @
3f7b0bae
...
@@ -50,6 +50,9 @@ class StyleSheet : public Packaged {
...
@@ -50,6 +50,9 @@ class StyleSheet : public Packaged {
inline
RealRect
getCardRect
()
const
{
return
RealRect
(
0
,
0
,
card_width
,
card_height
);
}
inline
RealRect
getCardRect
()
const
{
return
RealRect
(
0
,
0
,
card_width
,
card_height
);
}
/// Return the style for a given field, it is not specified what type of field this is.
StyleP
styleFor
(
const
FieldP
&
field
);
/// Load a StyleSheet, given a Game and the name of the StyleSheet
/// Load a StyleSheet, given a Game and the name of the StyleSheet
static
StyleSheetP
byGameAndName
(
const
Game
&
game
,
const
String
&
name
);
static
StyleSheetP
byGameAndName
(
const
Game
&
game
,
const
String
&
name
);
/// name of the package without the game name
/// name of the package without the game name
...
...
src/data/symbol.cpp
View file @
3f7b0bae
...
@@ -163,6 +163,26 @@ IMPLEMENT_REFLECTION(Symbol) {
...
@@ -163,6 +163,26 @@ IMPLEMENT_REFLECTION(Symbol) {
REFLECT
(
parts
);
REFLECT
(
parts
);
}
}
// ----------------------------------------------------------------------------- : Default symbol
// A default symbol part, a square, moved by d
SymbolPartP
default_symbol_part
(
double
d
)
{
SymbolPartP
part
=
new_shared
<
SymbolPart
>
();
part
->
points
.
push_back
(
new_shared2
<
ControlPoint
>
(
d
+
.2
,
d
+
.2
));
part
->
points
.
push_back
(
new_shared2
<
ControlPoint
>
(
d
+
.2
,
d
+
.8
));
part
->
points
.
push_back
(
new_shared2
<
ControlPoint
>
(
d
+
.8
,
d
+
.8
));
part
->
points
.
push_back
(
new_shared2
<
ControlPoint
>
(
d
+
.8
,
d
+
.2
));
part
->
name
=
_
(
"Square"
);
return
part
;
}
// A default symbol, a square
SymbolP
default_symbol
()
{
SymbolP
symbol
=
new_shared
<
Symbol
>
();
symbol
->
parts
.
push_back
(
default_symbol_part
(
0
));
return
symbol
;
}
// ----------------------------------------------------------------------------- : SymbolView
// ----------------------------------------------------------------------------- : SymbolView
SymbolView
::
SymbolView
()
{}
SymbolView
::
SymbolView
()
{}
...
...
src/data/symbol.hpp
View file @
3f7b0bae
...
@@ -162,6 +162,8 @@ class Symbol {
...
@@ -162,6 +162,8 @@ class Symbol {
DECLARE_REFLECTION
();
DECLARE_REFLECTION
();
};
};
/// A default symbol: a square
SymbolP
default_symbol
();
// ----------------------------------------------------------------------------- : SymbolView
// ----------------------------------------------------------------------------- : SymbolView
...
...
src/gui/symbol/window.cpp
View file @
3f7b0bae
...
@@ -19,26 +19,6 @@
...
@@ -19,26 +19,6 @@
#include <wx/filename.h>
#include <wx/filename.h>
#include <wx/wfstream.h>
#include <wx/wfstream.h>
// ------------------------------------------------------------------------------------------------ : Default symbol
// A default symbol part, a square, moved by d
SymbolPartP
defaultSymbolPart
(
double
d
)
{
SymbolPartP
part
=
new_shared
<
SymbolPart
>
();
part
->
points
.
push_back
(
new_shared2
<
ControlPoint
>
(
d
+
.2
,
d
+
.2
));
part
->
points
.
push_back
(
new_shared2
<
ControlPoint
>
(
d
+
.2
,
d
+
.8
));
part
->
points
.
push_back
(
new_shared2
<
ControlPoint
>
(
d
+
.8
,
d
+
.8
));
part
->
points
.
push_back
(
new_shared2
<
ControlPoint
>
(
d
+
.8
,
d
+
.2
));
part
->
name
=
_
(
"Square"
);
return
part
;
}
// A default symbol, a square
SymbolP
default_symbol
()
{
SymbolP
symbol
=
new_shared
<
Symbol
>
();
symbol
->
parts
.
push_back
(
defaultSymbolPart
(
0
));
return
symbol
;
}
// ----------------------------------------------------------------------------- : Constructor
// ----------------------------------------------------------------------------- : Constructor
SymbolWindow
::
SymbolWindow
(
Window
*
parent
)
{
SymbolWindow
::
SymbolWindow
(
Window
*
parent
)
{
...
...
src/script/image.cpp
View file @
3f7b0bae
...
@@ -10,8 +10,16 @@
...
@@ -10,8 +10,16 @@
#include <script/context.hpp>
#include <script/context.hpp>
#include <util/dynamic_arg.hpp>
#include <util/dynamic_arg.hpp>
#include <util/io/package.hpp>
#include <util/io/package.hpp>
// for functions:
#include <data/set.hpp>
#include <data/stylesheet.hpp>
#include <data/symbol.hpp>
#include <data/field/symbol.hpp>
#include <render/symbol/filter.hpp>
#include <gui/util.hpp> // load_resource_image
#include <gui/util.hpp> // load_resource_image
DECLARE_TYPEOF_COLLECTION
(
SymbolStyle
::
VariationP
);
// image generating functions have two modes
// image generating functions have two modes
// if last_update_age > 0 they return whether the image is still up to date
// if last_update_age > 0 they return whether the image is still up to date
// if last_update_age == 0 they generate the image
// if last_update_age == 0 they generate the image
...
@@ -226,6 +234,37 @@ SCRIPT_FUNCTION(set_combine) {
...
@@ -226,6 +234,37 @@ SCRIPT_FUNCTION(set_combine) {
}
}
}
}
SCRIPT_FUNCTION
(
symbol_variation
)
{
SCRIPT_PARAM
(
ValueP
,
symbol
);
SymbolValueP
value
=
dynamic_pointer_cast
<
SymbolValue
>
(
symbol
);
if
(
last_update_age
()
==
0
)
{
SCRIPT_PARAM
(
String
,
variation
);
// find set & style
SCRIPT_PARAM
(
Set
*
,
set
);
SCRIPT_OPTIONAL_PARAM_
(
CardP
,
card
);
SymbolStyleP
style
=
dynamic_pointer_cast
<
SymbolStyle
>
(
set
->
stylesheetFor
(
card
)
->
styleFor
(
value
->
fieldP
));
if
(
!
style
)
throw
InternalError
(
_
(
"Symbol value has a style of the wrong type"
));
// load symbol
SymbolP
symbol
;
if
(
value
->
filename
.
empty
())
{
symbol
=
default_symbol
();
}
else
{
symbol
=
set
->
readFile
<
SymbolP
>
(
value
->
filename
);
}
// determine filter & render
FOR_EACH
(
v
,
style
->
variations
)
{
if
(
v
->
name
==
variation
)
{
// render & filter
return
new_intrusive1
<
ScriptImage
>
(
render_symbol
(
symbol
,
*
v
->
filter
,
v
->
border_radius
));
}
}
throw
ScriptError
(
_
(
"Variation of symbol not found ('"
)
+
variation
+
_
(
"')"
));
}
else
{
// SCRIPT_RETURN(last_update_age() >= value->filename.last_update_age);
SCRIPT_RETURN
(
true
);
}
}
SCRIPT_FUNCTION
(
buildin_image
)
{
SCRIPT_FUNCTION
(
buildin_image
)
{
if
(
last_update_age
()
==
0
)
{
if
(
last_update_age
()
==
0
)
{
SCRIPT_PARAM
(
String
,
input
);
SCRIPT_PARAM
(
String
,
input
);
...
@@ -233,14 +272,15 @@ SCRIPT_FUNCTION(buildin_image) {
...
@@ -233,14 +272,15 @@ SCRIPT_FUNCTION(buildin_image) {
if
(
!
img
.
Ok
())
throw
ScriptError
(
_
(
"There is no build in image '"
)
+
input
+
_
(
"'"
));
if
(
!
img
.
Ok
())
throw
ScriptError
(
_
(
"There is no build in image '"
)
+
input
+
_
(
"'"
));
return
new_intrusive1
<
ScriptImage
>
(
img
);
return
new_intrusive1
<
ScriptImage
>
(
img
);
}
else
{
}
else
{
SCRIPT_RETURN
(
true
);
SCRIPT_RETURN
(
true
);
// always up to date
}
}
}
}
void
init_script_image_functions
(
Context
&
ctx
)
{
void
init_script_image_functions
(
Context
&
ctx
)
{
ctx
.
setVariable
(
_
(
"linear blend"
),
script_linear_blend
);
ctx
.
setVariable
(
_
(
"linear blend"
),
script_linear_blend
);
ctx
.
setVariable
(
_
(
"masked blend"
),
script_masked_blend
);
ctx
.
setVariable
(
_
(
"masked blend"
),
script_masked_blend
);
ctx
.
setVariable
(
_
(
"set mask"
),
script_set_mask
);
ctx
.
setVariable
(
_
(
"set mask"
),
script_set_mask
);
ctx
.
setVariable
(
_
(
"set combine"
),
script_set_combine
);
ctx
.
setVariable
(
_
(
"set combine"
),
script_set_combine
);
ctx
.
setVariable
(
_
(
"buildin image"
),
script_buildin_image
);
ctx
.
setVariable
(
_
(
"symbol variation"
),
script_symbol_variation
);
ctx
.
setVariable
(
_
(
"buildin image"
),
script_buildin_image
);
}
}
src/script/value.hpp
View file @
3f7b0bae
...
@@ -257,6 +257,8 @@ class ScriptObject : public ScriptValue {
...
@@ -257,6 +257,8 @@ class ScriptObject : public ScriptValue {
int
i
=
item_count
(
*
value
);
int
i
=
item_count
(
*
value
);
return
i
>=
0
?
i
:
ScriptValue
::
itemCount
();
return
i
>=
0
?
i
:
ScriptValue
::
itemCount
();
}
}
/// Get access to the value
inline
T
getValue
()
{
return
value
;
}
private:
private:
T
value
;
///< The object
T
value
;
///< The object
ScriptValueP
getDefault
()
const
{
ScriptValueP
getDefault
()
const
{
...
@@ -332,9 +334,15 @@ inline ScriptValueP toScript(const shared_ptr<T>& v) { return new_intrusive1<Scr
...
@@ -332,9 +334,15 @@ inline ScriptValueP toScript(const shared_ptr<T>& v) { return new_intrusive1<Scr
Type
name
=
getParam
<
Type
>
(
ctx
.
getVariable
(
_
(
#
name
)))
Type
name
=
getParam
<
Type
>
(
ctx
.
getVariable
(
_
(
#
name
)))
template
<
typename
T
>
template
<
typename
T
>
inline
T
getParam
(
const
ScriptValueP
&
value
)
{
return
*
value
;
}
inline
T
getParam
(
const
ScriptValueP
&
value
)
{
template
<>
ScriptObject
<
T
>*
o
=
dynamic_cast
<
ScriptObject
<
T
>*>
(
value
.
get
());
inline
ScriptValueP
getParam
<
ScriptValueP
>
(
const
ScriptValueP
&
value
)
{
return
value
;
}
if
(
!
o
)
throw
ScriptError
(
_
(
"Can't convert from "
)
+
value
->
typeName
()
+
_
(
" to object"
));
return
o
->
getValue
();
}
template
<>
inline
ScriptValueP
getParam
<
ScriptValueP
>
(
const
ScriptValueP
&
value
)
{
return
value
;
}
template
<>
inline
String
getParam
<
String
>
(
const
ScriptValueP
&
value
)
{
return
*
value
;
}
template
<>
inline
int
getParam
<
int
>
(
const
ScriptValueP
&
value
)
{
return
*
value
;
}
template
<>
inline
double
getParam
<
double
>
(
const
ScriptValueP
&
value
)
{
return
*
value
;
}
/// Retrieve an optional parameter
/// Retrieve an optional parameter
/** Usage:
/** Usage:
...
@@ -347,17 +355,24 @@ inline ScriptValueP getParam<ScriptValueP>(const ScriptValueP& value) { return v
...
@@ -347,17 +355,24 @@ inline ScriptValueP getParam<ScriptValueP>(const ScriptValueP& value) { return v
* }
* }
* @endcode
* @endcode
*/
*/
#define SCRIPT_OPTIONAL_PARAM(Type, name) SCRIPT_OPTIONAL_PARAM_N(Type,
name, #
name)
#define SCRIPT_OPTIONAL_PARAM(Type, name) SCRIPT_OPTIONAL_PARAM_N(Type,
#name,
name)
#define SCRIPT_OPTIONAL_PARAM_N(Type, str, name) \
#define SCRIPT_OPTIONAL_PARAM_N(Type, str, name)
\
ScriptValueP
name
##
_
=
ctx
.
getVariableOpt
(
_
(
str
));
\
ScriptValueP
name
##
_
=
ctx
.
getVariableOpt
(
_
(
str
));
\
Type
name
=
name
##
_
?
*
name
##
_
:
Type
();
\
Type
name
=
name
##
_
?
getParam
<
Type
>
(
name
##
_
)
:
Type
();
\
if
(
name
##
_
)
if
(
name
##
_
)
/// Retrieve an optional parameter, can't be used as an if statement
#define SCRIPT_OPTIONAL_PARAM_(Type, name) SCRIPT_OPTIONAL_PARAM_N_(Type, #name, name)
#define SCRIPT_OPTIONAL_PARAM_N_(Type, str, name) \
ScriptValueP
name
##
_
=
ctx
.
getVariableOpt
(
_
(
str
));
\
Type
name
=
name
##
_
?
getParam
<
Type
>
(
name
##
_
)
:
Type
();
/// Retrieve an optional parameter with a default value
/// Retrieve an optional parameter with a default value
#define SCRIPT_PARAM_DEFAULT(Type, name, def) \
#define SCRIPT_PARAM_DEFAULT(Type, name, def)
\
ScriptValueP
name
##
_
=
ctx
.
getVariableOpt
(
_
(
#
name
));
\
ScriptValueP
name
##
_
=
ctx
.
getVariableOpt
(
_
(
#
name
));
\
Type
name
=
name
##
_
?
*
name
##
_
:
def
Type
name
=
name
##
_
?
getParam
<
Type
>
(
name
##
_
)
:
def
/// Return a value from a SCRIPT_FUNCTION
/// Return a value from a SCRIPT_FUNCTION
#define SCRIPT_RETURN(value) return toScript(value)
#define SCRIPT_RETURN(value) return toScript(value)
...
...
src/util/index_map.hpp
View file @
3f7b0bae
...
@@ -71,7 +71,7 @@ class IndexMap : private vector<Value> {
...
@@ -71,7 +71,7 @@ class IndexMap : private vector<Value> {
/// Is a key in the domain of this index map?
/// Is a key in the domain of this index map?
inline
bool
containsKey
(
const
Key
&
key
)
const
{
inline
bool
containsKey
(
const
Key
&
key
)
const
{
assert
(
key
);
assert
(
key
);
return
key
->
index
<
this
.
size
()
&&
get_key
((
*
this
)[
key
->
index
])
==
key
;
return
key
->
index
<
this
->
size
()
&&
get_key
((
*
this
)[
key
->
index
])
==
key
;
}
}
/// Find a value given the key name, return an iterator
/// Find a value given the key name, return an iterator
...
...
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