Commit a8e7b3b6 authored by Claes Sjofors's avatar Claes Sjofors

Ge Move dynamic, different move and scale factors for x and y direction

parent 495a1a23
...@@ -29,8 +29,10 @@ public String moveYAttribute; ...@@ -29,8 +29,10 @@ public String moveYAttribute;
String scaleYAttribute; String scaleYAttribute;
double xOffset; double xOffset;
double yOffset; double yOffset;
double factor; double xFactor;
double scaleFactor; double yFactor;
double scaleXFactor;
double scaleYFactor;
boolean attrMoveXFound; boolean attrMoveXFound;
boolean attrMoveYFound; boolean attrMoveYFound;
...@@ -61,7 +63,8 @@ public String moveYAttribute; ...@@ -61,7 +63,8 @@ public String moveYAttribute;
public GeDynMove( GeDyn dyn, String moveXAttribute, String moveYAttribute, public GeDynMove( GeDyn dyn, String moveXAttribute, String moveYAttribute,
String scaleXAttribute, String scaleYAttribute, double String scaleXAttribute, String scaleYAttribute, double
xOffset, double yOffset, double factor, double scaleFactor) { xOffset, double yOffset, double xFactor, double yFactor,
double scaleXFactor, double scaleYFactor) {
super( dyn, GeDyn.mDynType_Move, GeDyn.mActionType_No); super( dyn, GeDyn.mDynType_Move, GeDyn.mActionType_No);
this.moveXAttribute = moveXAttribute; this.moveXAttribute = moveXAttribute;
this.moveYAttribute = moveYAttribute; this.moveYAttribute = moveYAttribute;
...@@ -69,8 +72,10 @@ public String moveYAttribute; ...@@ -69,8 +72,10 @@ public String moveYAttribute;
this.scaleYAttribute = scaleYAttribute; this.scaleYAttribute = scaleYAttribute;
this.xOffset = xOffset; this.xOffset = xOffset;
this.yOffset = yOffset; this.yOffset = yOffset;
this.factor = factor; this.xFactor = xFactor;
this.scaleFactor = scaleFactor; this.yFactor = yFactor;
this.scaleXFactor = scaleXFactor;
this.scaleYFactor = scaleYFactor;
} }
public void connect() { public void connect() {
String attrName = dyn.getAttrName( moveXAttribute); String attrName = dyn.getAttrName( moveXAttribute);
...@@ -169,11 +174,11 @@ public String moveYAttribute; ...@@ -169,11 +174,11 @@ public String moveYAttribute;
if ( repaintNow) { if ( repaintNow) {
if ( attrMoveXFound){ if ( attrMoveXFound){
double xRatio = wRoot/wRootOrig; double xRatio = wRoot/wRootOrig;
loc.x = (int) ((xOrig + (valueMoveX - xOffset) * factor) * xRatio); loc.x = (int) ((xOrig + (valueMoveX - xOffset) * xFactor) * xRatio);
} }
if ( attrMoveYFound){ if ( attrMoveYFound){
double yRatio = wRoot/wRootOrig; double yRatio = wRoot/wRootOrig;
loc.y = (int) ((yOrig + (valueMoveY - yOffset) * factor) * yRatio); loc.y = (int) ((yOrig + (valueMoveY - yOffset) * yFactor) * yRatio);
} }
((JComponent)dyn.comp).setLocation( loc); ((JComponent)dyn.comp).setLocation( loc);
} }
...@@ -188,14 +193,14 @@ public String moveYAttribute; ...@@ -188,14 +193,14 @@ public String moveYAttribute;
float valueScaleY = 0; float valueScaleY = 0;
if ( attrScaleXFound) { if ( attrScaleXFound) {
valueScaleX = (float) (dyn.en.gdh.getObjectRefInfoFloat( scaleXp) * scaleFactor); valueScaleX = (float) (dyn.en.gdh.getObjectRefInfoFloat( scaleXp) * scaleXFactor);
if ( valueScaleX != scaleXOldValue || firstScan || wRoot != wRootOld) { if ( valueScaleX != scaleXOldValue || firstScan || wRoot != wRootOld) {
repaintNow = true; repaintNow = true;
scaleXOldValue = valueScaleX; scaleXOldValue = valueScaleX;
} }
} }
if ( attrScaleYFound) { if ( attrScaleYFound) {
valueScaleY = (float) (dyn.en.gdh.getObjectRefInfoFloat( scaleYp) * scaleFactor); valueScaleY = (float) (dyn.en.gdh.getObjectRefInfoFloat( scaleYp) * scaleYFactor);
if ( valueScaleY != scaleYOldValue || firstScan || wRoot != wRootOld) { if ( valueScaleY != scaleYOldValue || firstScan || wRoot != wRootOld) {
repaintNow = true; repaintNow = true;
scaleYOldValue = valueScaleY; scaleYOldValue = valueScaleY;
......
...@@ -5262,10 +5262,15 @@ void GeMove::get_attributes( attr_sItem *attrinfo, int *item_count) ...@@ -5262,10 +5262,15 @@ void GeMove::get_attributes( attr_sItem *attrinfo, int *item_count)
attrinfo[i].type = glow_eType_Double; attrinfo[i].type = glow_eType_Double;
attrinfo[i++].size = sizeof( y_offset); attrinfo[i++].size = sizeof( y_offset);
strcpy( attrinfo[i].name, "Move.Factor"); strcpy( attrinfo[i].name, "Move.XFactor");
attrinfo[i].value = &factor; attrinfo[i].value = &x_factor;
attrinfo[i].type = glow_eType_Double; attrinfo[i].type = glow_eType_Double;
attrinfo[i++].size = sizeof( factor); attrinfo[i++].size = sizeof( x_factor);
strcpy( attrinfo[i].name, "Move.YFactor");
attrinfo[i].value = &y_factor;
attrinfo[i].type = glow_eType_Double;
attrinfo[i++].size = sizeof( y_factor);
strcpy( attrinfo[i].name, "Move.ScaleXAttribute"); strcpy( attrinfo[i].name, "Move.ScaleXAttribute");
attrinfo[i].value = scale_x_attribute; attrinfo[i].value = scale_x_attribute;
...@@ -5277,10 +5282,15 @@ void GeMove::get_attributes( attr_sItem *attrinfo, int *item_count) ...@@ -5277,10 +5282,15 @@ void GeMove::get_attributes( attr_sItem *attrinfo, int *item_count)
attrinfo[i].type = glow_eType_String; attrinfo[i].type = glow_eType_String;
attrinfo[i++].size = sizeof( scale_y_attribute); attrinfo[i++].size = sizeof( scale_y_attribute);
strcpy( attrinfo[i].name, "Move.ScaleFactor"); strcpy( attrinfo[i].name, "Move.ScaleXFactor");
attrinfo[i].value = &scale_factor; attrinfo[i].value = &scale_x_factor;
attrinfo[i].type = glow_eType_Double;
attrinfo[i++].size = sizeof( scale_x_factor);
strcpy( attrinfo[i].name, "Move.ScaleYFactor");
attrinfo[i].value = &scale_y_factor;
attrinfo[i].type = glow_eType_Double; attrinfo[i].type = glow_eType_Double;
attrinfo[i++].size = sizeof( scale_factor); attrinfo[i++].size = sizeof( scale_x_factor);
strcpy( attrinfo[i].name, "Move.ScaleType"); strcpy( attrinfo[i].name, "Move.ScaleType");
attrinfo[i].value = &scale_type; attrinfo[i].value = &scale_type;
...@@ -5327,8 +5337,10 @@ void GeMove::save( ofstream& fp) ...@@ -5327,8 +5337,10 @@ void GeMove::save( ofstream& fp)
fp << int(ge_eSave_Move_scale_y_attribute) << FSPACE << scale_y_attribute << endl; fp << int(ge_eSave_Move_scale_y_attribute) << FSPACE << scale_y_attribute << endl;
fp << int(ge_eSave_Move_x_offset) << FSPACE << x_offset << endl; fp << int(ge_eSave_Move_x_offset) << FSPACE << x_offset << endl;
fp << int(ge_eSave_Move_y_offset) << FSPACE << y_offset << endl; fp << int(ge_eSave_Move_y_offset) << FSPACE << y_offset << endl;
fp << int(ge_eSave_Move_factor) << FSPACE << factor << endl; fp << int(ge_eSave_Move_x_factor) << FSPACE << x_factor << endl;
fp << int(ge_eSave_Move_scale_factor) << FSPACE << scale_factor << endl; fp << int(ge_eSave_Move_y_factor) << FSPACE << y_factor << endl;
fp << int(ge_eSave_Move_scale_x_factor) << FSPACE << scale_x_factor << endl;
fp << int(ge_eSave_Move_scale_y_factor) << FSPACE << scale_y_factor << endl;
fp << int(ge_eSave_Move_scale_type) << FSPACE << scale_type << endl; fp << int(ge_eSave_Move_scale_type) << FSPACE << scale_type << endl;
fp << int(ge_eSave_End) << endl; fp << int(ge_eSave_End) << endl;
} }
...@@ -5370,8 +5382,10 @@ void GeMove::open( ifstream& fp) ...@@ -5370,8 +5382,10 @@ void GeMove::open( ifstream& fp)
break; break;
case ge_eSave_Move_x_offset: fp >> x_offset; break; case ge_eSave_Move_x_offset: fp >> x_offset; break;
case ge_eSave_Move_y_offset: fp >> y_offset; break; case ge_eSave_Move_y_offset: fp >> y_offset; break;
case ge_eSave_Move_factor: fp >> factor; break; case ge_eSave_Move_x_factor: fp >> x_factor; break;
case ge_eSave_Move_scale_factor: fp >> scale_factor; break; case ge_eSave_Move_y_factor: fp >> y_factor; break;
case ge_eSave_Move_scale_x_factor: fp >> scale_x_factor; break;
case ge_eSave_Move_scale_y_factor: fp >> scale_y_factor; break;
case ge_eSave_Move_scale_type: fp >> tmp; scale_type = (glow_eScaleType)tmp; break; case ge_eSave_Move_scale_type: fp >> tmp; scale_type = (glow_eScaleType)tmp; break;
case ge_eSave_End: end_found = 1; break; case ge_eSave_End: end_found = 1; break;
default: default:
...@@ -5381,6 +5395,10 @@ void GeMove::open( ifstream& fp) ...@@ -5381,6 +5395,10 @@ void GeMove::open( ifstream& fp)
if ( end_found) if ( end_found)
break; break;
} }
if ( y_factor == 0)
y_factor = x_factor;
if ( scale_y_factor == 0)
scale_y_factor = scale_x_factor;
} }
int GeMove::connect( grow_tObject object, glow_sTraceData *trace_data) int GeMove::connect( grow_tObject object, glow_sTraceData *trace_data)
...@@ -5480,10 +5498,10 @@ int GeMove::scan( grow_tObject object) ...@@ -5480,10 +5498,10 @@ int GeMove::scan( grow_tObject object)
if ( scale_x_p || scale_y_p) { if ( scale_x_p || scale_y_p) {
if ( scale_x_p) { if ( scale_x_p) {
switch ( scale_x_type) { switch ( scale_x_type) {
case pwr_eType_Float32: scale_x = *scale_x_p * scale_factor; break; case pwr_eType_Float32: scale_x = *scale_x_p * scale_x_factor; break;
case pwr_eType_Float64: scale_x = *(pwr_tFloat64 *)scale_x_p * scale_factor; break; case pwr_eType_Float64: scale_x = *(pwr_tFloat64 *)scale_x_p * scale_x_factor; break;
case pwr_eType_Int32: scale_x = *(pwr_tInt32 *)scale_x_p * scale_factor; break; case pwr_eType_Int32: scale_x = *(pwr_tInt32 *)scale_x_p * scale_x_factor; break;
case pwr_eType_UInt32: scale_x = *(pwr_tUInt32 *)scale_x_p * scale_factor; break; case pwr_eType_UInt32: scale_x = *(pwr_tUInt32 *)scale_x_p * scale_x_factor; break;
default: scale_x = 1; default: scale_x = 1;
} }
} }
...@@ -5492,10 +5510,10 @@ int GeMove::scan( grow_tObject object) ...@@ -5492,10 +5510,10 @@ int GeMove::scan( grow_tObject object)
if ( scale_y_p) { if ( scale_y_p) {
switch ( scale_y_type) { switch ( scale_y_type) {
case pwr_eType_Float32: scale_y = *scale_y_p * scale_factor; break; case pwr_eType_Float32: scale_y = *scale_y_p * scale_y_factor; break;
case pwr_eType_Float64: scale_y = *(pwr_tFloat64 *)scale_y_p * scale_factor; break; case pwr_eType_Float64: scale_y = *(pwr_tFloat64 *)scale_y_p * scale_y_factor; break;
case pwr_eType_Int32: scale_y = *(pwr_tInt32 *)scale_y_p * scale_factor; break; case pwr_eType_Int32: scale_y = *(pwr_tInt32 *)scale_y_p * scale_y_factor; break;
case pwr_eType_UInt32: scale_y = *(pwr_tUInt32 *)scale_y_p * scale_factor; break; case pwr_eType_UInt32: scale_y = *(pwr_tUInt32 *)scale_y_p * scale_y_factor; break;
default: scale_y = 1; default: scale_y = 1;
} }
} }
...@@ -5527,10 +5545,10 @@ int GeMove::scan( grow_tObject object) ...@@ -5527,10 +5545,10 @@ int GeMove::scan( grow_tObject object)
default: ; default: ;
} }
switch ( move_x_type) { switch ( move_x_type) {
case pwr_eType_Float32: move_x = x_orig + scale_offs + (*move_x_p - x_offset) * factor; break; case pwr_eType_Float32: move_x = x_orig + scale_offs + (*move_x_p - x_offset) * x_factor; break;
case pwr_eType_Float64: move_x = x_orig + scale_offs + (*(pwr_tFloat64 *) move_x_p - x_offset) * factor; break; case pwr_eType_Float64: move_x = x_orig + scale_offs + (*(pwr_tFloat64 *) move_x_p - x_offset) * x_factor; break;
case pwr_eType_Int32: move_x = x_orig + scale_offs + (*(pwr_tInt32 *) move_x_p - x_offset) * factor; break; case pwr_eType_Int32: move_x = x_orig + scale_offs + (*(pwr_tInt32 *) move_x_p - x_offset) * x_factor; break;
case pwr_eType_UInt32: move_x = x_orig + scale_offs + (*(pwr_tUInt32 *) move_x_p - x_offset) * factor; break; case pwr_eType_UInt32: move_x = x_orig + scale_offs + (*(pwr_tUInt32 *) move_x_p - x_offset) * x_factor; break;
default: move_x = x_orig + scale_offs; default: move_x = x_orig + scale_offs;
} }
} }
...@@ -5552,10 +5570,10 @@ int GeMove::scan( grow_tObject object) ...@@ -5552,10 +5570,10 @@ int GeMove::scan( grow_tObject object)
} }
switch ( move_y_type) { switch ( move_y_type) {
case pwr_eType_Float32: move_y = y_orig + scale_offs + (*move_y_p - y_offset) * factor; break; case pwr_eType_Float32: move_y = y_orig + scale_offs + (*move_y_p - y_offset) * y_factor; break;
case pwr_eType_Float64: move_y = y_orig + scale_offs + (*(pwr_tFloat64 *) move_y_p - y_offset) * factor; break; case pwr_eType_Float64: move_y = y_orig + scale_offs + (*(pwr_tFloat64 *) move_y_p - y_offset) * y_factor; break;
case pwr_eType_Int32: move_y = y_orig + scale_offs + (*(pwr_tInt32 *) move_y_p - y_offset) * factor; break; case pwr_eType_Int32: move_y = y_orig + scale_offs + (*(pwr_tInt32 *) move_y_p - y_offset) * y_factor; break;
case pwr_eType_UInt32: move_y = y_orig + scale_offs + (*(pwr_tUInt32 *) move_y_p - y_offset) * factor; break; case pwr_eType_UInt32: move_y = y_orig + scale_offs + (*(pwr_tUInt32 *) move_y_p - y_offset) * y_factor; break;
default: move_y = y_orig + scale_offs; default: move_y = y_orig + scale_offs;
} }
} }
...@@ -5579,10 +5597,10 @@ int GeMove::scan( grow_tObject object) ...@@ -5579,10 +5597,10 @@ int GeMove::scan( grow_tObject object)
else { else {
if ( move_x_p) { if ( move_x_p) {
switch ( move_x_type) { switch ( move_x_type) {
case pwr_eType_Float32: move_x = (*move_x_p - x_offset) * factor; break; case pwr_eType_Float32: move_x = (*move_x_p - x_offset) * x_factor; break;
case pwr_eType_Float64: move_x = (*(pwr_tFloat64 *) move_x_p - x_offset) * factor; break; case pwr_eType_Float64: move_x = (*(pwr_tFloat64 *) move_x_p - x_offset) * x_factor; break;
case pwr_eType_Int32: move_x = (*(pwr_tInt32 *) move_x_p - x_offset) * factor; break; case pwr_eType_Int32: move_x = (*(pwr_tInt32 *) move_x_p - x_offset) * x_factor; break;
case pwr_eType_UInt32: move_x = (*(pwr_tUInt32 *) move_x_p - x_offset) * factor; break; case pwr_eType_UInt32: move_x = (*(pwr_tUInt32 *) move_x_p - x_offset) * x_factor; break;
default: move_x = 0; default: move_x = 0;
} }
} }
...@@ -5591,10 +5609,10 @@ int GeMove::scan( grow_tObject object) ...@@ -5591,10 +5609,10 @@ int GeMove::scan( grow_tObject object)
if ( move_y_p) { if ( move_y_p) {
switch ( move_y_type) { switch ( move_y_type) {
case pwr_eType_Float32: move_y = (*move_y_p - y_offset) * factor; break; case pwr_eType_Float32: move_y = (*move_y_p - y_offset) * y_factor; break;
case pwr_eType_Float64: move_y = (*(pwr_tFloat64 *) move_y_p - y_offset) * factor; break; case pwr_eType_Float64: move_y = (*(pwr_tFloat64 *) move_y_p - y_offset) * y_factor; break;
case pwr_eType_Int32: move_y = (*(pwr_tInt32 *) move_y_p - y_offset) * factor; break; case pwr_eType_Int32: move_y = (*(pwr_tInt32 *) move_y_p - y_offset) * y_factor; break;
case pwr_eType_UInt32: move_y = (*(pwr_tUInt32 *) move_y_p - y_offset) * factor; break; case pwr_eType_UInt32: move_y = (*(pwr_tUInt32 *) move_y_p - y_offset) * y_factor; break;
default: move_y = 0; default: move_y = 0;
} }
} }
...@@ -5624,8 +5642,9 @@ int GeMove::export_java( grow_tObject object, ofstream& fp, bool first, char *va ...@@ -5624,8 +5642,9 @@ int GeMove::export_java( grow_tObject object, ofstream& fp, bool first, char *va
fp << "new GeDynMove(" << var_name << ".dd, \"" fp << "new GeDynMove(" << var_name << ".dd, \""
<< move_x_attribute << "\",\"" << move_y_attribute << "\",\"" << move_x_attribute << "\",\"" << move_y_attribute << "\",\""
<< scale_x_attribute << "\",\"" << scale_y_attribute << "\"," << scale_x_attribute << "\",\"" << scale_y_attribute << "\","
<< x_offset << "," << y_offset << "," << factor * zoom_factor << "," << x_offset << "," << y_offset << ","
<< scale_factor << ")" << endl; << x_factor * zoom_factor << "," << y_factor * zoom_factor << ","
<< scale_x_factor << "," << scale_y_factor << ")" << endl;
return 1; return 1;
} }
......
...@@ -350,11 +350,13 @@ ...@@ -350,11 +350,13 @@
ge_eSave_Move_move_y_attribute = 1501, ge_eSave_Move_move_y_attribute = 1501,
ge_eSave_Move_x_offset = 1502, ge_eSave_Move_x_offset = 1502,
ge_eSave_Move_y_offset = 1503, ge_eSave_Move_y_offset = 1503,
ge_eSave_Move_factor = 1504, ge_eSave_Move_x_factor = 1504,
ge_eSave_Move_scale_x_attribute = 1505, ge_eSave_Move_scale_x_attribute = 1505,
ge_eSave_Move_scale_y_attribute = 1506, ge_eSave_Move_scale_y_attribute = 1506,
ge_eSave_Move_scale_factor = 1507, ge_eSave_Move_scale_x_factor = 1507,
ge_eSave_Move_scale_type = 1508, ge_eSave_Move_scale_type = 1508,
ge_eSave_Move_y_factor = 1509,
ge_eSave_Move_scale_y_factor = 1510,
ge_eSave_AnalogShift_attribute = 1700, ge_eSave_AnalogShift_attribute = 1700,
ge_eSave_DigShift_attribute = 1800, ge_eSave_DigShift_attribute = 1800,
ge_eSave_Animation_attribute = 1900, ge_eSave_Animation_attribute = 1900,
...@@ -1309,8 +1311,10 @@ class GeMove : public GeDynElem { ...@@ -1309,8 +1311,10 @@ class GeMove : public GeDynElem {
pwr_tAName scale_y_attribute; pwr_tAName scale_y_attribute;
double x_offset; double x_offset;
double y_offset; double y_offset;
double factor; double x_factor;
double scale_factor; double y_factor;
double scale_x_factor;
double scale_y_factor;
glow_eScaleType scale_type; glow_eScaleType scale_type;
pwr_tFloat32 *move_x_p; pwr_tFloat32 *move_x_p;
...@@ -1345,8 +1349,8 @@ class GeMove : public GeDynElem { ...@@ -1345,8 +1349,8 @@ class GeMove : public GeDynElem {
GeMove( GeDyn *e_dyn) : GeMove( GeDyn *e_dyn) :
GeDynElem(e_dyn, ge_mDynType_Move, (ge_mActionType) 0, ge_eDynPrio_Move), GeDynElem(e_dyn, ge_mDynType_Move, (ge_mActionType) 0, ge_eDynPrio_Move),
x_offset(0), y_offset(0), factor(1), scale_factor(1), x_offset(0), y_offset(0), x_factor(1), y_factor(0), scale_x_factor(1),
scale_type(glow_eScaleType_LowerLeft) scale_y_factor(0), scale_type(glow_eScaleType_LowerLeft)
{ {
strcpy( move_x_attribute, ""); strcpy( move_x_attribute, "");
strcpy( move_y_attribute, ""); strcpy( move_y_attribute, "");
...@@ -1355,7 +1359,8 @@ class GeMove : public GeDynElem { ...@@ -1355,7 +1359,8 @@ class GeMove : public GeDynElem {
} }
GeMove( const GeMove& x) : GeMove( const GeMove& x) :
GeDynElem(x.dyn,x.dyn_type,x.action_type,x.prio), x_offset(x.x_offset), GeDynElem(x.dyn,x.dyn_type,x.action_type,x.prio), x_offset(x.x_offset),
y_offset(x.y_offset), factor(x.factor), scale_factor(x.scale_factor), y_offset(x.y_offset), x_factor(x.x_factor), y_factor(x.y_factor),
scale_x_factor(x.scale_x_factor), scale_y_factor(x.scale_y_factor),
scale_type(x.scale_type) scale_type(x.scale_type)
{ {
strcpy( move_x_attribute, x.move_x_attribute); strcpy( move_x_attribute, x.move_x_attribute);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment