Fixed: failed to re-prepare text after content dependent script changed

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@482 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2007-07-04 22:23:09 +00:00
parent ede910a153
commit 470fbcb9a7
16 changed files with 31 additions and 22 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ void DataViewer::updateStyles(bool only_content_dependent) {
Style& s = *v->getStyle();
if (only_content_dependent && !s.content_dependent) continue;
if (s.update(ctx)) {
s.tellListeners();
s.tellListeners(only_content_dependent);
}
}
}
+3
View File
@@ -146,6 +146,9 @@ void TextViewer::reset() {
elements.clear();
lines.clear();
}
bool TextViewer::prepared() const {
return !lines.empty();
}
// ----------------------------------------------------------------------------- : Positions
+2
View File
@@ -58,6 +58,8 @@ class TextViewer {
bool prepare(RotatedDC& dc, const String& text, TextStyle& style, Context&);
/// Reset the cached data, at a new call to draw it will be recalculated
void reset();
/// Is the viewer prepare()d?
bool prepared() const;
// --------------------------------------------------- : Positions
+2 -2
View File
@@ -72,6 +72,6 @@ void ChoiceValueViewer::draw(RotatedDC& dc) {
}
}
void ChoiceValueViewer::onStyleChange() {
viewer.redraw(*this);
void ChoiceValueViewer::onStyleChange(bool already_prepared) {
if (!already_prepared) viewer.redraw(*this);
}
+1 -1
View File
@@ -21,7 +21,7 @@ class ChoiceValueViewer : public ValueViewer {
DECLARE_VALUE_VIEWER(Choice) : ValueViewer(parent,style) {}
virtual void draw(RotatedDC& dc);
virtual void onStyleChange();
virtual void onStyleChange(bool);
};
// ----------------------------------------------------------------------------- : EOF
+2 -2
View File
@@ -86,9 +86,9 @@ bool ColorValueViewer::containsPoint(const RealPoint& p) const {
}
}
void ColorValueViewer::onStyleChange() {
void ColorValueViewer::onStyleChange(bool already_prepared) {
alpha_mask = AlphaMaskP();
viewer.redraw(*this);
if (!already_prepared) viewer.redraw(*this);
}
void ColorValueViewer::loadMask(const Rotation& rot) const {
+1 -1
View File
@@ -25,7 +25,7 @@ class ColorValueViewer : public ValueViewer {
virtual void draw(RotatedDC& dc);
virtual bool containsPoint(const RealPoint& p) const;
virtual void onStyleChange();
virtual void onStyleChange(bool);
private:
mutable AlphaMaskP alpha_mask;
+2 -2
View File
@@ -77,10 +77,10 @@ void ImageValueViewer::onValueChange() {
bitmap = Bitmap();
}
void ImageValueViewer::onStyleChange() {
void ImageValueViewer::onStyleChange(bool already_prepared) {
bitmap = Bitmap();
alpha_mask = AlphaMaskP(); // TODO: only reload whatever has changed
viewer.redraw(*this);
if (!already_prepared) viewer.redraw(*this);
}
void ImageValueViewer::loadMask(const Rotation& rot) const {
+1 -1
View File
@@ -27,7 +27,7 @@ class ImageValueViewer : public ValueViewer {
virtual bool containsPoint(const RealPoint& p) const;
virtual void onValueChange();
virtual void onStyleChange();
virtual void onStyleChange(bool);
private:
Bitmap bitmap;
+6 -4
View File
@@ -21,12 +21,14 @@ bool TextValueViewer::prepare(RotatedDC& dc) {
style().mask.load(image);
}
}
v.prepare(dc, value().value(), style(), viewer.getContext());
return true;
return v.prepare(dc, value().value(), style(), viewer.getContext());
}
void TextValueViewer::draw(RotatedDC& dc) {
drawFieldBorder(dc);
if (!v.prepared()) {
v.prepare(dc, value().value(), style(), viewer.getContext());
}
v.draw(dc, style(), (DrawWhat)(
DRAW_NORMAL
| (viewer.drawBorders() ? DRAW_BORDERS : 0)
@@ -38,7 +40,7 @@ void TextValueViewer::onValueChange() {
v.reset();
}
void TextValueViewer::onStyleChange() {
void TextValueViewer::onStyleChange(bool already_prepared) {
v.reset();
viewer.redraw(*this);
if (!already_prepared) viewer.redraw(*this);
}
+1 -1
View File
@@ -24,7 +24,7 @@ class TextValueViewer : public ValueViewer {
virtual bool prepare(RotatedDC& dc);
virtual void draw(RotatedDC& dc);
virtual void onValueChange();
virtual void onStyleChange();
virtual void onStyleChange(bool);
protected:
TextViewer v;
+2 -1
View File
@@ -57,7 +57,8 @@ class ValueViewer : public StyleListener {
*/
virtual void onValueChange() {}
/// Called when a (scripted) property of the associated style has changed
virtual void onStyleChange() {}
/** If alread_prepared, should make sure the viewer stays in a state similair to that after prepare() */
virtual void onStyleChange(bool already_prepared) {}
/// Called when an action is performed on the associated value
virtual void onAction(const Action&, bool undone) { onValueChange(); }