first stab at a group level margin override

This commit is contained in:
Zachary Pavlov 2009-07-16 19:25:56 +00:00
parent 5d4bd04eab
commit 3c864d6a2a
5 changed files with 57 additions and 1 deletions

View File

@ -119,6 +119,37 @@ get_groups() const {
return _dependent;
}
////////////////////////////////////////////////////////////////////
// Function: PaletteGroup::get_margin_override
// Access: Public
// Description: Returns the set of groups this group depends on.
////////////////////////////////////////////////////////////////////
int PaletteGroup::
get_margin_override() const {
return _margin_override;
}
////////////////////////////////////////////////////////////////////
// Function: PaletteGroup::get_margin_override
// Access: Public
// Description: Returns the set of groups this group depends on.
////////////////////////////////////////////////////////////////////
void PaletteGroup::
set_margin_override(const int override) {
_margin_override = override;
_has_margin_override = true;
}
////////////////////////////////////////////////////////////////////
// Function: PaletteGroup::has_margin_override
// Access: Public
// Description: Returns the set of groups this group depends on.
////////////////////////////////////////////////////////////////////
bool PaletteGroup::
has_margin_override() const {
return _has_margin_override;
}
////////////////////////////////////////////////////////////////////
// Function: PaletteGroup::get_placements
// Access: Public

View File

@ -65,6 +65,10 @@ public:
int get_dependency_order() const;
int get_dirname_order() const;
void set_margin_override(const int override);
int get_margin_override() const;
bool has_margin_override() const;
bool is_preferred_over(const PaletteGroup &other) const;
void increment_egg_count();
@ -116,6 +120,8 @@ private:
// don't use them otherwise.
int _num_placements;
int _num_pages;
bool _has_margin_override;
int _margin_override;
pvector<PalettePage *> _load_pages;
public:

View File

@ -939,7 +939,11 @@ compute_size_from_uvs(const TexCoordd &min_uv, const TexCoordd &max_uv) {
_position._x_size = max(_position._x_size, 4);
_position._y_size = max(_position._y_size, 4);
_position._margin = _texture->get_margin();
if(get_group()->has_margin_override()) {
_position._margin = get_group()->get_margin_override();
} else {
_position._margin = _texture->get_margin();
}
//cout << "margin: " << _position._margin << endl;
// Normally, we have interior margins, but if the image size is too

View File

@ -128,6 +128,8 @@ private:
// don't use it otherwise.
int _num_references;
int _margin_override;
public:
static TypeHandle get_class_type() {
return _type_handle;

View File

@ -228,6 +228,7 @@ parse_group_line(const vector_string &words) {
S_on,
S_includes,
S_dir,
S_margin,
};
State state = S_none;
@ -248,6 +249,9 @@ parse_group_line(const vector_string &words) {
} else if (word == "dir") {
state = S_dir;
} else if (word == "margin") {
state = S_margin;
} else {
switch (state) {
case S_none:
@ -275,7 +279,16 @@ parse_group_line(const vector_string &words) {
group->set_dirname(word);
state = S_none;
break;
case S_margin:
int margin_override;
if (!string_to_int(word, margin_override)) {
group->set_margin_override(margin_override);
}
state = S_none;
break;
}
}
++wi;