diff --git a/old_widget/Container2.cpp b/old_widget/Container2.cpp
index f02de2f..620bf5d 100644
--- a/old_widget/Container2.cpp
+++ b/old_widget/Container2.cpp
@@ -22,240 +22,6 @@ ewol::widget::Container2::~Container2() {
subWidgetRemoveToggle();
}
-void ewol::widget::Container2::setSubWidget(Widget _newWidget, int _idWidget) {
- subWidgetRemove(_idWidget);
- this.subWidget[_idWidget] = _newWidget;
- if (this.subWidget[_idWidget] != null) {
- Log.verbose("Add widget : " + _idWidget);
- this.subWidget[_idWidget].setParent(sharedFromThis());
- }
- markToRedraw();
- requestUpdateSize();
-}
-
-void ewol::widget::Container2::subWidgetReplace( Widget _oldWidget,
- Widget _newWidget) {
- boolean haveChange = false;
- for (int iii=0; iii<2; ++iii) {
- if (this.subWidget[iii] != _oldWidget) {
- continue;
- }
- this.subWidget[iii].removeParent();
- this.subWidget[iii].reset();
- this.subWidget[iii] = _newWidget;
- if (this.subWidget[iii] != null) {
- this.subWidget[iii].setParent(sharedFromThis());
- }
- haveChange = true;
- }
- if (haveChange == false) {
- Log.warning("Request replace with a wrong old widget");
- return;
- }
- markToRedraw();
- requestUpdateSize();
-}
-void ewol::widget::Container2::subWidgetRemove(int _idWidget) {
- if (this.subWidget[_idWidget] != null) {
- Log.verbose("Remove widget : " + _idWidget);
- this.subWidget[_idWidget].removeParent();
- this.subWidget[_idWidget].reset();
- markToRedraw();
- requestUpdateSize();
- }
-}
-void ewol::widget::Container2::subWidgetUnLink(int _idWidget) {
- if (this.subWidget[_idWidget] != null) {
- this.subWidget[_idWidget].removeParent();
- Log.verbose("Unlink widget : " + _idWidget);
- }
- this.subWidget[_idWidget].reset();
-}
-
-EwolObject ewol::widget::Container2::getSubObjectNamed( String _widgetName) {
- EwolObject tmpObject = Widget::getSubObjectNamed(_widgetName);
- if (tmpObject != null) {
- return tmpObject;
- }
- if (this.subWidget[0] != null) {
- tmpObject = this.subWidget[0].getSubObjectNamed(_widgetName);
- if (tmpObject != null) {
- return tmpObject;
- }
- }
- if (this.subWidget[1] != null) {
- return this.subWidget[1].getSubObjectNamed(_widgetName);
- }
- return null;
-}
-
-void ewol::widget::Container2::systemDraw( ewol::DrawProperty _displayProp) {
- if (propertyHide.get() == true){
- // widget is hidden ...
- return;
- }
- Widget::systemDraw(_displayProp);
- if (this.subWidget[this.idWidgetDisplayed] != null) {
- //Log.info("Draw : [" + propertyName + "] t=" + getObjectType() + " o=" + this.origin + " s=" + this.size);
- this.subWidget[this.idWidgetDisplayed].systemDraw(_displayProp);
- }
-}
-
-ewol::Padding ewol::widget::Container2::onChangeSizePadded( ewol::Padding _padding) {
- Widget::onChangeSize();
- Vector2f localAvaillable = this.size - Vector2f(_padding.x(), _padding.y());
- // Checkin the filling properties == > for the subElements:
- Vector2f subElementSize = this.minSize;
- if (propertyFill.x() == true) {
- subElementSize.setX(this.size.x());
- }
- if (propertyFill.y() == true) {
- subElementSize.setY(this.size.y());
- }
- Vector2f delta = ewol::gravityGenerateDelta(propertyGravity, this.size - subElementSize);
- Vector2f origin = delta + Vector2f(_padding.xLeft(), _padding.yButtom());
- subElementSize -= Vector2f(_padding.x(), _padding.y());
- for (int iii = 0; iii < 2; ++iii) {
- if (this.subWidget[iii] != null) {
- Vector2f origin2 = origin+this.offset;
- Vector2f minSize = this.subWidget[iii].getCalculateMinSize();
- //Vector2b expand = this.subWidget[iii].propertyExpand.get();
- origin2 += ewol::gravityGenerateDelta(propertyGravity, minSize - localAvaillable);
- this.subWidget[iii].setOrigin(this.origin + origin);
- this.subWidget[iii].setSize(subElementSize);
- this.subWidget[iii].onChangeSize();
- }
- }
- Vector2f selectableAreaPos = origin-Vector2f(_padding.xLeft(), _padding.yButtom());
- Vector2f selectableAreaEndPos = this.size - (selectableAreaPos + subElementSize + Vector2f(_padding.x(), _padding.y()));
- markToRedraw();
- return ewol::Padding(selectableAreaPos.x(),
- selectableAreaEndPos.y(),
- selectableAreaEndPos.x(),
- selectableAreaPos.y());
-}
-
-void ewol::widget::Container2::calculateMinMaxSizePadded( ewol::Padding _padding) {
- // call main class
- this.minSize = Vector2f(0,0);
- // call sub classes
- for (int iii = 0; iii < 2; ++iii) {
- if (this.subWidget[iii] != null) {
- this.subWidget[iii].calculateMinMaxSize();
- Vector2f min = this.subWidget[iii].getCalculateMinSize();
- this.minSize.setMax(min);
- }
- }
- // add padding :
- this.minSize += Vector2f(_padding.x(), _padding.y());
- // verify the min max of the min size ...
- checkMinSize();
- markToRedraw();
-}
-
-void ewol::widget::Container2::onRegenerateDisplay() {
- if (this.subWidget[this.idWidgetDisplayed] != null) {
- this.subWidget[this.idWidgetDisplayed].onRegenerateDisplay();
- }
-}
-/*
-Widget ewol::widget::Container2::getWidgetAtPos( Vector2f _pos) {
- if (isHide() == false) {
- if (this.subWidget[this.idWidgetDisplayed] != null) {
- return this.subWidget[this.idWidgetDisplayed].getWidgetAtPos(_pos);
- }
- }
- return null;
-}
-*/
-
-boolean ewol::widget::Container2::loadXML( exml::Element _node) {
- if (_node.exist() == false) {
- return false;
- }
- // parse generic properties :
- Widget::loadXML(_node);
- // remove previous element :
- subWidgetRemove();
- Log.verbose("Create en element 2 ... with nodes.size()=" + _node.nodes.size());
- // parse all the elements:
- for( auto it : _node.nodes) {
- Log.verbose(" node: " + it);
- exml::Element pNode = it.toElement();
- if (pNode.exist() == false) {
- // trash here all that is not element
- continue;
- }
- String widgetName = pNode.getValue();
- if (getWidgetManager().exist(widgetName) == false) {
- Log.error("(l " + pNode.getPos() + ") Unknown basic node='" + widgetName + "' not in: [" + getWidgetManager().list() + "]" );
- continue;
- }
- boolean toogleMode=false;
- if (getSubWidget() != null) {
- toogleMode=true;
- if (getSubWidgetToggle() != null) {
- Log.error("(l " + pNode.getPos() + ") Can only have one subWidget ??? node='" + widgetName + "'" );
- continue;
- }
- }
- Log.debug("try to create subwidget : '" + widgetName + "'");
- Widget tmpWidget = getWidgetManager().create(widgetName, pNode);
- if (tmpWidget == null) {
- EWOL_ERROR ("(l " + pNode.getPos() + ") Can not create the widget: '" + widgetName + "'");
- continue;
- }
- // add widget :
- if (toogleMode == false) {
- setSubWidget(tmpWidget);
- } else {
- setSubWidgetToggle(tmpWidget);
- }
- if (tmpWidget.loadXML(pNode) == false) {
- EWOL_ERROR ("(l "+pNode.getPos()+") can not load widget properties: '" + widgetName + "'");
- return false;
- }
- }
- return true;
-}
-
-void ewol::widget::Container2::setOffset( Vector2f _newVal) {
- if (this.offset != _newVal) {
- Widget::setOffset(_newVal);
- // recalculate the new sise and position of sub widget ...
- calculateSize();
- }
-}
-
-void ewol::widget::Container2::requestDestroyFromChild( EwolObject _child) {
- if (this.subWidget[0] == _child) {
- if (this.subWidget[0] == null) {
- return;
- }
- this.subWidget[0].removeParent();
- this.subWidget[0].reset();
- markToRedraw();
- }
- if (this.subWidget[1] == _child) {
- if (this.subWidget[1] == null) {
- return;
- }
- this.subWidget[1].removeParent();
- this.subWidget[1].reset();
- markToRedraw();
- }
-}
-
-void ewol::widget::Container2::drawWidgetTree(int _level) {
- Widget::drawWidgetTree(_level);
- _level++;
- if (this.subWidget[0] != null) {
- this.subWidget[0].drawWidgetTree(_level);
- }
- if (this.subWidget[1] != null) {
- this.subWidget[1].drawWidgetTree(_level);
- }
-}
diff --git a/samples/src/sample/atriasoft/ewol/BasicWindows.java b/samples/src/sample/atriasoft/ewol/BasicWindows.java
index 18eebcb..37d62b1 100644
--- a/samples/src/sample/atriasoft/ewol/BasicWindows.java
+++ b/samples/src/sample/atriasoft/ewol/BasicWindows.java
@@ -1,10 +1,10 @@
package sample.atriasoft.ewol;
import org.atriasoft.etk.Color;
-import org.atriasoft.etk.Dimension;
+import org.atriasoft.etk.Dimension3f;
import org.atriasoft.etk.Distance;
-import org.atriasoft.etk.math.Vector2b;
-import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.etk.math.Vector3b;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.Gravity;
import org.atriasoft.ewol.widget.Button;
import org.atriasoft.ewol.widget.Sizer;
@@ -16,43 +16,45 @@ import org.atriasoft.ewol.widget.Windows;
public class BasicWindows extends Windows {
public static void eventButtonChangeGravity(final BasicWindows self) {
Gravity state = self.testWidget.getPropertyGravity();
- state = switch (state) {
- case BUTTOM -> Gravity.BUTTOM_LEFT;
- case BUTTOM_LEFT -> Gravity.BUTTOM_RIGHT;
+ // TODO: I change the gravity model to integrate the 3rd rank...
+ /*state = switch (state) {
+ case BUTTOM -> Gravity.BOTTOM_LEFT;
+ case BUTTOM_LEFT -> Gravity.BOTTOM_RIGHT;
case BUTTOM_RIGHT -> Gravity.CENTER;
case CENTER -> Gravity.LEFT;
case LEFT -> Gravity.RIGHT;
case RIGHT -> Gravity.TOP;
case TOP -> Gravity.TOP_LEFT;
case TOP_LEFT -> Gravity.TOP_RIGHT;
- case TOP_RIGHT -> Gravity.BUTTOM;
+ case TOP_RIGHT -> Gravity.BOTTOM;
};
+ */
self.testWidget.setPropertyGravity(state);
- self.buttonGravity.setPropertyValue("gravity: " + state);
+ //self.buttonGravity.setPropertyValue("gravity: " + state);
}
public static void eventButtonExpandX(final BasicWindows self) {
- Vector2b state = self.testWidget.getPropertyExpand();
+ Vector3b state = self.testWidget.getPropertyExpand();
self.testWidget.setPropertyExpand(state.withX(!state.x()));
- self.buttonExpandX.setPropertyValue(state.x() ? "expand X" : "un-expand X");
+ //self.buttonExpandX.setPropertyValue(state.x() ? "expand X" : "un-expand X");
}
public static void eventButtonExpandY(final BasicWindows self) {
- Vector2b state = self.testWidget.getPropertyExpand();
+ Vector3b state = self.testWidget.getPropertyExpand();
self.testWidget.setPropertyExpand(state.withY(!state.y()));
- self.buttonExpandY.setPropertyValue(state.y() ? "expand Y" : "un-expand Y");
+ //self.buttonExpandY.setPropertyValue(state.y() ? "expand Y" : "un-expand Y");
}
public static void eventButtonFillX(final BasicWindows self) {
- Vector2b state = self.testWidget.getPropertyFill();
+ Vector3b state = self.testWidget.getPropertyFill();
self.testWidget.setPropertyFill(state.withX(!state.x()));
- self.buttonFillX.setPropertyValue(state.x() ? "fill X" : "un-fill X");
+ //self.buttonFillX.setPropertyValue(state.x() ? "fill X" : "un-fill X");
}
public static void eventButtonFillY(final BasicWindows self) {
- Vector2b state = self.testWidget.getPropertyFill();
+ Vector3b state = self.testWidget.getPropertyFill();
self.testWidget.setPropertyFill(state.withY(!state.y()));
- self.buttonFillY.setPropertyValue(state.y() ? "fill Y" : "un-fill Y");
+ //self.buttonFillY.setPropertyValue(state.y() ? "fill Y" : "un-fill Y");
}
Widget testWidget;
@@ -69,97 +71,93 @@ public class BasicWindows extends Windows {
setPropertyTitle("No title set !!! for this test");
Sizer sizerVertMain = new Sizer(DisplayMode.modeVert);
- sizerVertMain.setPropertyExpand(Vector2b.TRUE_TRUE);
- sizerVertMain.setPropertyFill(Vector2b.TRUE_TRUE);
+ sizerVertMain.setPropertyExpand(Vector3b.TRUE);
+ sizerVertMain.setPropertyFill(Vector3b.TRUE);
setSubWidget(sizerVertMain);
this.sizerMenuHori = new Sizer(DisplayMode.modeHori);
- this.sizerMenuHori.setPropertyExpand(Vector2b.TRUE_FALSE);
- this.sizerMenuHori.setPropertyLockExpand(Vector2b.TRUE_TRUE);
- this.sizerMenuHori.setPropertyFill(Vector2b.TRUE_TRUE);
+ this.sizerMenuHori.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE);
+ this.sizerMenuHori.setPropertyLockExpand(Vector3b.TRUE);
+ this.sizerMenuHori.setPropertyFill(Vector3b.TRUE);
sizerVertMain.subWidgetAdd(this.sizerMenuHori);
{
Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(100, 100), Distance.PIXEL));
+ simpleSpacer.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_128, Distance.PIXEL));
simpleSpacer.setPropertyColor(Color.ALICE_BLUE);
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_FALSE);
- simpleSpacer.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE);
+ simpleSpacer.setPropertyExpandIfFree(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
sizerVertMain.subWidgetAdd(simpleSpacer);
}
this.sizerTestAreaHori = new Sizer(DisplayMode.modeHori);
- this.sizerTestAreaHori.setPropertyExpand(Vector2b.TRUE_FALSE);
- this.sizerTestAreaHori.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
- this.sizerTestAreaHori.setPropertyFill(Vector2b.TRUE_FALSE);
+ this.sizerTestAreaHori.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE);
+ this.sizerTestAreaHori.setPropertyExpandIfFree(Vector3b.TRUE);
+ this.sizerTestAreaHori.setPropertyFill(Vector3b.TRUE_FALSE_FALSE);
sizerVertMain.subWidgetAdd(this.sizerTestAreaHori);
{
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyColor(Color.DARK_GREEN);
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_FALSE);
- simpleSpacer.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE_FALSE_FALSE);
+ simpleSpacer.setPropertyExpandIfFree(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
sizerVertMain.subWidgetAdd(simpleSpacer);
}
{
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyColor(Color.PINK);
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(30, 30), Distance.PIXEL));
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension3f(new Vector3f(30, 30, 30), Distance.PIXEL));
this.sizerMenuHori.subWidgetAdd(simpleSpacer);
}
+ /*
{
- this.buttonExpandX = new Button();
- this.buttonExpandX.setPropertyValue("un-expand X");
- this.buttonExpandX.setPropertyExpand(Vector2b.FALSE_FALSE);
- this.buttonExpandX.setPropertyFill(Vector2b.FALSE_FALSE);
- this.buttonExpandX.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.buttonExpandX = Button.createLabelButton("un-expand X");
+ this.buttonExpandX.setPropertyExpand(Vector3b.FALSE);
+ this.buttonExpandX.setPropertyFill(Vector3b.FALSE);
+ this.buttonExpandX.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.sizerMenuHori.subWidgetAdd(this.buttonExpandX);
this.buttonExpandX.signalClick.connectAuto(this, BasicWindows::eventButtonExpandX);
}
{
- this.buttonExpandY = new Button();
- this.buttonExpandY.setPropertyValue("un-expand Y");
- this.buttonExpandY.setPropertyExpand(Vector2b.FALSE_FALSE);
- this.buttonExpandY.setPropertyFill(Vector2b.FALSE_FALSE);
- this.buttonExpandY.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.buttonExpandY = Button.createLabelButton("un-expand Y");
+ this.buttonExpandY.setPropertyExpand(Vector3b.FALSE);
+ this.buttonExpandY.setPropertyFill(Vector3b.FALSE);
+ this.buttonExpandY.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.sizerMenuHori.subWidgetAdd(this.buttonExpandY);
this.buttonExpandY.signalClick.connectAuto(this, BasicWindows::eventButtonExpandY);
}
{
- this.buttonFillX = new Button();
- this.buttonFillX.setPropertyValue("un-fill X");
- this.buttonFillX.setPropertyExpand(Vector2b.FALSE_FALSE);
- this.buttonFillX.setPropertyFill(Vector2b.FALSE_FALSE);
- this.buttonFillX.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.buttonFillX = Button.createLabelButton("un-fill X");
+ this.buttonFillX.setPropertyExpand(Vector3b.FALSE);
+ this.buttonFillX.setPropertyFill(Vector3b.FALSE);
+ this.buttonFillX.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.sizerMenuHori.subWidgetAdd(this.buttonFillX);
this.buttonFillX.signalClick.connectAuto(this, BasicWindows::eventButtonFillX);
}
{
- this.buttonFillY = new Button();
- this.buttonFillY.setPropertyValue("un-fill Y");
- this.buttonFillY.setPropertyExpand(Vector2b.FALSE_FALSE);
- this.buttonFillY.setPropertyFill(Vector2b.FALSE_FALSE);
- this.buttonFillY.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.buttonFillY = Button.createLabelButton("un-fill Y");
+ this.buttonFillY.setPropertyExpand(Vector3b.FALSE);
+ this.buttonFillY.setPropertyFill(Vector3b.FALSE);
+ this.buttonFillY.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.sizerMenuHori.subWidgetAdd(this.buttonFillY);
this.buttonFillY.signalClick.connectAuto(this, BasicWindows::eventButtonFillY);
}
{
- this.buttonGravity = new Button();
- this.buttonGravity.setPropertyValue("gravity");
- this.buttonGravity.setPropertyExpand(Vector2b.FALSE_FALSE);
- this.buttonGravity.setPropertyFill(Vector2b.FALSE_FALSE);
- this.buttonGravity.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.buttonGravity = Button.createLabelButton("gravity");
+ this.buttonGravity.setPropertyExpand(Vector3b.FALSE);
+ this.buttonGravity.setPropertyFill(Vector3b.FALSE);
+ this.buttonGravity.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.sizerMenuHori.subWidgetAdd(this.buttonGravity);
this.buttonGravity.signalClick.connectAuto(this, BasicWindows::eventButtonChangeGravity);
}
-
+ */
}
public void addButton(Widget widget) {
@@ -171,10 +169,10 @@ public class BasicWindows extends Windows {
{
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyColor(Color.CHOCOLATE);
- simpleSpacer.setPropertyExpand(Vector2b.FALSE_FALSE);
- simpleSpacer.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ simpleSpacer.setPropertyExpand(Vector3b.FALSE);
+ simpleSpacer.setPropertyExpandIfFree(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.sizerTestAreaHori.subWidgetAdd(simpleSpacer);
}
this.testWidget = widget;
@@ -182,10 +180,10 @@ public class BasicWindows extends Windows {
{
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyColor(Color.GREEN_YELLOW);
- simpleSpacer.setPropertyExpand(Vector2b.FALSE_FALSE);
- simpleSpacer.setPropertyExpandIfFree(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ simpleSpacer.setPropertyExpand(Vector3b.FALSE);
+ simpleSpacer.setPropertyExpandIfFree(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
+ simpleSpacer.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.sizerTestAreaHori.subWidgetAdd(simpleSpacer);
}
}
diff --git a/samples/src/sample/atriasoft/ewol/ComplexWindiows1/MainWindows.java b/samples/src/sample/atriasoft/ewol/ComplexWindiows1/MainWindows.java
index ac4de05..95d86fe 100644
--- a/samples/src/sample/atriasoft/ewol/ComplexWindiows1/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/ComplexWindiows1/MainWindows.java
@@ -1,10 +1,10 @@
package sample.atriasoft.ewol.ComplexWindiows1;
import org.atriasoft.etk.Color;
-import org.atriasoft.etk.Dimension;
+import org.atriasoft.etk.Dimension3f;
import org.atriasoft.etk.Distance;
-import org.atriasoft.etk.math.Vector2b;
-import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.etk.math.Vector3b;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.widget.Sizer;
import org.atriasoft.ewol.widget.Sizer.DisplayMode;
import org.atriasoft.ewol.widget.Spacer;
@@ -17,54 +17,54 @@ public class MainWindows extends Windows {
setPropertyTitle("Simple sample test");
//EwolObject.getContext().getFontDefault().setName("FreeSans");
Sizer sizerMain = new Sizer(DisplayMode.modeVert);
- sizerMain.setPropertyExpand(Vector2b.TRUE_TRUE);
- sizerMain.setPropertyFill(Vector2b.TRUE_TRUE);
+ sizerMain.setPropertyExpand(Vector3b.TRUE);
+ sizerMain.setPropertyFill(Vector3b.TRUE);
setSubWidget(sizerMain);
Sizer sizerHori1 = new Sizer(DisplayMode.modeHori);
- sizerHori1.setPropertyExpand(Vector2b.TRUE_TRUE);
- sizerHori1.setPropertyFill(Vector2b.TRUE_TRUE);
+ sizerHori1.setPropertyExpand(Vector3b.TRUE);
+ sizerHori1.setPropertyFill(Vector3b.TRUE);
sizerMain.subWidgetAdd(sizerHori1);
Sizer sizerHori2 = new Sizer(DisplayMode.modeHori);
- sizerHori2.setPropertyExpand(Vector2b.TRUE_TRUE);
- sizerHori2.setPropertyFill(Vector2b.TRUE_TRUE);
+ sizerHori2.setPropertyExpand(Vector3b.TRUE);
+ sizerHori2.setPropertyFill(Vector3b.TRUE);
sizerMain.subWidgetAdd(sizerHori2);
{
Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyMinSize(new Dimension(new Vector2f(100, 100), Distance.PIXEL));
+ simpleSpacer.setPropertyMinSize(new Dimension3f(new Vector3f(100, 100, 100), Distance.PIXEL));
simpleSpacer.setPropertyColor(Color.ALICE_BLUE);
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
sizerHori1.subWidgetAdd(simpleSpacer);
}
{
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyColor(Color.DARK_GREEN);
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
sizerHori1.subWidgetAdd(simpleSpacer);
}
{
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyColor(Color.CHOCOLATE);
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
sizerHori1.subWidgetAdd(simpleSpacer);
}
{
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyColor(Color.GREEN_YELLOW);
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
sizerHori2.subWidgetAdd(simpleSpacer);
}
{
Spacer simpleSpacer = new Spacer();
simpleSpacer.setPropertyColor(Color.PINK);
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
sizerHori2.subWidgetAdd(simpleSpacer);
}
}
diff --git a/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java b/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java
index e74feb0..f3fc62d 100644
--- a/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/sampleButton/MainWindows.java
@@ -1,6 +1,6 @@
package sample.atriasoft.ewol.sampleButton;
-import org.atriasoft.etk.math.Vector2b;
+import org.atriasoft.etk.math.Vector3b;
import org.atriasoft.ewol.widget.Button;
import sample.atriasoft.ewol.BasicWindows;
@@ -10,10 +10,9 @@ public class MainWindows extends BasicWindows {
public MainWindows() {
setPropertyTitle("Simple Button test");
- Button simpleButton = new Button();
- simpleButton.setPropertyValue("Top Button");
- simpleButton.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleButton.setPropertyFill(Vector2b.TRUE_TRUE);
+ Button simpleButton = Button.createLabelButton("Top Button");
+ simpleButton.setPropertyExpand(Vector3b.TRUE);
+ simpleButton.setPropertyFill(Vector3b.TRUE);
this.setTestWidget(simpleButton);
}
}
diff --git a/samples/src/sample/atriasoft/ewol/sampleEntry/MainWindows.java b/samples/src/sample/atriasoft/ewol/sampleEntry/MainWindows.java
index 8993332..a69b85b 100644
--- a/samples/src/sample/atriasoft/ewol/sampleEntry/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/sampleEntry/MainWindows.java
@@ -1,6 +1,6 @@
package sample.atriasoft.ewol.sampleEntry;
-import org.atriasoft.etk.math.Vector2b;
+import org.atriasoft.etk.math.Vector3b;
import org.atriasoft.ewol.widget.Entry;
import sample.atriasoft.ewol.BasicWindows;
@@ -11,8 +11,8 @@ public class MainWindows extends BasicWindows {
setPropertyTitle("Simple Entry test");
Entry simpleEntry = new Entry();
- simpleEntry.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleEntry.setPropertyFill(Vector2b.TRUE_FALSE);
+ simpleEntry.setPropertyExpand(Vector3b.TRUE);
+ simpleEntry.setPropertyFill(Vector3b.TRUE_FALSE_FALSE);
this.setTestWidget(simpleEntry);
}
diff --git a/samples/src/sample/atriasoft/ewol/simpleWindowsLabel/MainWindows.java b/samples/src/sample/atriasoft/ewol/simpleWindowsLabel/MainWindows.java
index e30d452..4b2089f 100644
--- a/samples/src/sample/atriasoft/ewol/simpleWindowsLabel/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/simpleWindowsLabel/MainWindows.java
@@ -1,6 +1,6 @@
package sample.atriasoft.ewol.simpleWindowsLabel;
-import org.atriasoft.etk.math.Vector2b;
+import org.atriasoft.etk.math.Vector3b;
import org.atriasoft.ewol.widget.Label;
import org.atriasoft.ewol.widget.Spacer;
@@ -18,14 +18,14 @@ public class MainWindows extends BasicWindows {
Label simpleLabel = new Label();
simpleLabel.setPropertyValue(
"Hello. World
- Coucou comment ca vas ???
- Pas trop bien, je me suis cassé la jambe.
The end");
- simpleLabel.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleLabel.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleLabel.setPropertyExpand(Vector3b.TRUE);
+ simpleLabel.setPropertyFill(Vector3b.TRUE);
this.setTestWidget(simpleLabel);
//! [ewol_sample_HW_windows_label]
} else {
Spacer simpleSpacer = new Spacer();
- simpleSpacer.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleSpacer.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleSpacer.setPropertyExpand(Vector3b.TRUE);
+ simpleSpacer.setPropertyFill(Vector3b.TRUE);
this.setTestWidget(simpleSpacer);
}
}
diff --git a/samples/src/sample/atriasoft/ewol/simpleWindowsWithCheckBox/MainWindows.java b/samples/src/sample/atriasoft/ewol/simpleWindowsWithCheckBox/MainWindows.java
index a730d08..135ce7a 100644
--- a/samples/src/sample/atriasoft/ewol/simpleWindowsWithCheckBox/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/simpleWindowsWithCheckBox/MainWindows.java
@@ -1,6 +1,6 @@
package sample.atriasoft.ewol.simpleWindowsWithCheckBox;
-import org.atriasoft.etk.math.Vector2b;
+import org.atriasoft.etk.math.Vector3b;
import org.atriasoft.ewol.widget.CheckBox;
import sample.atriasoft.ewol.BasicWindows;
@@ -15,14 +15,14 @@ public class MainWindows extends BasicWindows {
this.testWidget = new CheckBox();
//this.testWidget.setPropertySource(new Uri("DATA", "mireA.png"));
- this.testWidget.setPropertyExpand(Vector2b.TRUE_TRUE);
- this.testWidget.setPropertyFill(Vector2b.TRUE_TRUE);
+ this.testWidget.setPropertyExpand(Vector3b.TRUE);
+ this.testWidget.setPropertyFill(Vector3b.TRUE);
this.setTestWidget(this.testWidget);
/*
Button simpleButton = new Button();
simpleButton.setPropertyValue("Top Button");
- simpleButton.setPropertyExpand(Vector2b.TRUE_TRUE);
- simpleButton.setPropertyFill(Vector2b.TRUE_TRUE);
+ simpleButton.setPropertyExpand(Vector3b.TRUE);
+ simpleButton.setPropertyFill(Vector3b.TRUE);
this.setTestWidget(simpleButton);
*/
}
diff --git a/samples/src/sample/atriasoft/ewol/simpleWindowsWithImage/MainWindows.java b/samples/src/sample/atriasoft/ewol/simpleWindowsWithImage/MainWindows.java
index ac10906..c03941b 100644
--- a/samples/src/sample/atriasoft/ewol/simpleWindowsWithImage/MainWindows.java
+++ b/samples/src/sample/atriasoft/ewol/simpleWindowsWithImage/MainWindows.java
@@ -1,10 +1,10 @@
package sample.atriasoft.ewol.simpleWindowsWithImage;
-import org.atriasoft.etk.Dimension;
+import org.atriasoft.etk.Dimension3f;
import org.atriasoft.etk.Distance;
import org.atriasoft.etk.Uri;
-import org.atriasoft.etk.math.Vector2b;
-import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.etk.math.Vector3b;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.widget.Button;
import org.atriasoft.ewol.widget.ImageDisplay;
@@ -31,24 +31,22 @@ public class MainWindows extends BasicWindows {
this.testWidget = new ImageDisplay();
this.testWidget.setPropertySource(new Uri("DATA", "mireA.png"));
- this.testWidget.setPropertyExpand(Vector2b.TRUE_TRUE);
- this.testWidget.setPropertyFill(Vector2b.TRUE_TRUE);
- this.testWidget.setPropertyMinSize(new Dimension(Vector2f.VALUE_16, Distance.PIXEL));
+ this.testWidget.setPropertyExpand(Vector3b.TRUE);
+ this.testWidget.setPropertyFill(Vector3b.TRUE);
+ this.testWidget.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.setTestWidget(this.testWidget);
{
- Button button = new Button();
- button.setPropertyValue("Change image");
- button.setPropertyExpand(Vector2b.FALSE_FALSE);
- button.setPropertyFill(Vector2b.FALSE_FALSE);
- button.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ Button button = Button.createLabelButton("Change image");
+ button.setPropertyExpand(Vector3b.FALSE);
+ button.setPropertyFill(Vector3b.FALSE);
+ button.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.addButton(button);
button.signalClick.connectAuto(this, MainWindows::eventButtonChangeImage);
}
- this.buttonAspectRatio = new Button();
- this.buttonAspectRatio.setPropertyValue("keep aspect ratio");
- this.buttonAspectRatio.setPropertyExpand(Vector2b.FALSE_FALSE);
- this.buttonAspectRatio.setPropertyFill(Vector2b.FALSE_FALSE);
- this.buttonAspectRatio.setPropertyMinSize(new Dimension(new Vector2f(10, 10), Distance.PIXEL));
+ this.buttonAspectRatio = Button.createLabelButton("keep aspect ratio");
+ this.buttonAspectRatio.setPropertyExpand(Vector3b.FALSE);
+ this.buttonAspectRatio.setPropertyFill(Vector3b.FALSE);
+ this.buttonAspectRatio.setPropertyMinSize(new Dimension3f(Vector3f.VALUE_16, Distance.PIXEL));
this.addButton(this.buttonAspectRatio);
this.buttonAspectRatio.signalClick.connectAuto(this, MainWindows::eventButtonChangeKeepRatio);
}
diff --git a/src/org/atriasoft/ewol/DrawProperty.java b/src/org/atriasoft/ewol/DrawProperty.java
index 7e11144..41a9853 100644
--- a/src/org/atriasoft/ewol/DrawProperty.java
+++ b/src/org/atriasoft/ewol/DrawProperty.java
@@ -1,7 +1,7 @@
package org.atriasoft.ewol;
-import org.atriasoft.etk.math.Vector2f;
-import org.atriasoft.etk.math.Vector2i;
+import org.atriasoft.etk.math.Vector3f;
+import org.atriasoft.etk.math.Vector3i;
/**
* @file
@@ -36,26 +36,25 @@ import org.atriasoft.etk.math.Vector2i;
(0,0)
*/
//@formatter:on
-@SuppressWarnings("preview")
public record DrawProperty(
- Vector2i windowsSize, // !< Windows complete size
- Vector2i origin, // !< Windows clipping upper widget (can not be <0)
- Vector2i size// !< Windows clipping upper widget (can not be <0 and >this.windowsSize)
+ Vector3i windowsSize, // !< Windows complete size
+ Vector3i origin, // !< Windows clipping upper widget (can not be <0)
+ Vector3i size// !< Windows clipping upper widget (can not be <0 and >this.windowsSize)
) {
public DrawProperty() {
- this(Vector2i.ZERO, Vector2i.ZERO, Vector2i.ZERO);
+ this(Vector3i.ZERO, Vector3i.ZERO, Vector3i.ZERO);
}
- public DrawProperty(final Vector2i windowsSize, final Vector2i origin, final Vector2i size) {
+ public DrawProperty(final Vector3i windowsSize, final Vector3i origin, final Vector3i size) {
this.windowsSize = windowsSize;
this.origin = origin;
this.size = size;
}
- public DrawProperty withLimit(final Vector2f originIn, final Vector2f size) {
- Vector2i tmpSize = this.size.add(this.origin);
- Vector2i origin = this.origin.max((int) originIn.x(), (int) originIn.y());
- tmpSize = tmpSize.min((int) (originIn.x() + size.x()), (int) (originIn.y() + size.y()));
+ public DrawProperty withLimit(final Vector3f originIn, final Vector3f size) {
+ Vector3i tmpSize = this.size.add(this.origin);
+ Vector3i origin = this.origin.max((int) originIn.x(), (int) originIn.y(), (int) originIn.z());
+ tmpSize = tmpSize.min((int) (originIn.x() + size.x()), (int) (originIn.y() + size.y()), (int) (originIn.z() + size.z()));
tmpSize = tmpSize.less(origin);
return new DrawProperty(this.windowsSize, origin, tmpSize);
}
diff --git a/src/org/atriasoft/ewol/Gravity.java b/src/org/atriasoft/ewol/Gravity.java
index 009726b..8141b83 100644
--- a/src/org/atriasoft/ewol/Gravity.java
+++ b/src/org/atriasoft/ewol/Gravity.java
@@ -5,45 +5,104 @@
*/
package org.atriasoft.ewol;
-import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.etk.math.Vector3f;
/**
* Gravity of the widget property
*/
-public enum Gravity {
- BUTTOM, // !< gravity is in center
- BUTTOM_LEFT, // !< gravity is in top
- BUTTOM_RIGHT, // !< gravity is in buttom
- CENTER, // !< gravity is in right
- LEFT, // !< gravity is in left
- RIGHT, // !< gravity is in top-right
- TOP, // !< gravity is in top-left
- TOP_LEFT, // !< gravity is in buttom-right
- TOP_RIGHT; // !< gravity is in buttom-left
+public record Gravity(
+ GravityHorizontal x,
+ GravityVertical y,
+ GravityDepth z) {
- public static Vector2f gravityGenerateDelta(final Gravity gravity, final Vector2f deltas) {
+ public static final Gravity BOTTOM = new Gravity(GravityHorizontal.CENTER, GravityVertical.BOTTOM, GravityDepth.CENTER); // !< gravity is in center
+ public static final Gravity BOTTOM_LEFT = new Gravity(GravityHorizontal.LEFT, GravityVertical.BOTTOM, GravityDepth.CENTER); // !< gravity is in top
+ public static final Gravity BOTTOM_RIGHT = new Gravity(GravityHorizontal.RIGHT, GravityVertical.BOTTOM, GravityDepth.CENTER); // !< gravity is in bottom
+ public static final Gravity CENTER = new Gravity(GravityHorizontal.CENTER, GravityVertical.CENTER, GravityDepth.CENTER); // !< gravity is in right
+ public static final Gravity LEFT = new Gravity(GravityHorizontal.LEFT, GravityVertical.CENTER, GravityDepth.CENTER); // !< gravity is in left
+ public static final Gravity RIGHT = new Gravity(GravityHorizontal.RIGHT, GravityVertical.CENTER, GravityDepth.CENTER); // !< gravity is in top-right
+ public static final Gravity TOP = new Gravity(GravityHorizontal.CENTER, GravityVertical.TOP, GravityDepth.CENTER); // !< gravity is in top-left
+ public static final Gravity TOP_LEFT = new Gravity(GravityHorizontal.LEFT, GravityVertical.TOP, GravityDepth.CENTER); // !< gravity is in bottom-right
+ public static final Gravity TOP_RIGHT = new Gravity(GravityHorizontal.RIGHT, GravityVertical.TOP, GravityDepth.CENTER); // !< gravity is in bottom-left
+
+ public Vector3f gravityGenerateDelta(final Vector3f deltas) {
float outX = 0;
float outY = 0;
+ float outZ = 0;
if (deltas.x() > 0.0001f) {
- if (gravity == LEFT || gravity == BUTTOM_LEFT || gravity == TOP_LEFT) {
+ if (this.x == GravityHorizontal.LEFT) {
// nothing to do
- } else if (gravity == RIGHT || gravity == BUTTOM_RIGHT || gravity == TOP_RIGHT) {
+ } else if (this.x == GravityHorizontal.RIGHT) {
outX = (int) (deltas.x());
} else {
outX = (int) (deltas.x() * 0.5f);
}
}
if (deltas.y() > 0.0001f) {
- if (gravity == BUTTOM || gravity == BUTTOM_LEFT || gravity == BUTTOM_RIGHT) {
+ if (this.y == GravityVertical.BOTTOM) {
// nothing to do
- } else if (gravity == TOP || gravity == TOP_RIGHT || gravity == TOP_LEFT) {
+ } else if (this.y == GravityVertical.TOP) {
outY = (int) (deltas.y());
} else {
outY = (int) (deltas.y() * 0.5f);
}
}
- return new Vector2f(outX, outY);
+ if (deltas.z() > 0.0001f) {
+ if (this.z == GravityDepth.BACK) {
+ // nothing to do
+ } else if (this.z == GravityDepth.FRONT) {
+ outZ = (int) (deltas.z());
+ } else {
+ outZ = (int) (deltas.z() * 0.5f);
+ }
+ }
+ return new Vector3f(outX, outY, outZ);
+ }
+
+ public static Gravity valueOf(String value) {
+ GravityHorizontal x = GravityHorizontal.CENTER;
+ GravityVertical y = GravityVertical.CENTER;
+ GravityDepth z = GravityDepth.CENTER;
+ if (value.contains("LEFT")) {
+ x = GravityHorizontal.LEFT;
+ } else if (value.contains("RIGHT")) {
+ x = GravityHorizontal.RIGHT;
+ }
+ if (value.contains("TOP")) {
+ y = GravityVertical.TOP;
+ } else if (value.contains("BOTTOM") || value.contains("BUTTOM")) {
+ y = GravityVertical.BOTTOM;
+ }
+ if (value.contains("FRONT")) {
+ z = GravityDepth.FRONT;
+ } else if (value.contains("BACK")) {
+ z = GravityDepth.BACK;
+ }
+ return new Gravity(x, y, z);
+ }
+
+ @Override
+ public String toString() {
+ if (this.x == GravityHorizontal.CENTER && this.y == GravityVertical.CENTER && this.z == GravityDepth.CENTER) {
+ return GravityHorizontal.CENTER.toString();
+ }
+ StringBuilder data = new StringBuilder();
+ if (this.x != GravityHorizontal.CENTER) {
+ data.append(this.x.toString());
+ }
+ if (this.y != GravityVertical.CENTER) {
+ if (data.length() != 0) {
+ data.append("_");
+ }
+ data.append(this.y.toString());
+ }
+ if (this.z != GravityDepth.CENTER) {
+ if (data.length() != 0) {
+ data.append("_");
+ }
+ data.append(this.z.toString());
+ }
+ return data.toString();
}
}
-
diff --git a/src/org/atriasoft/ewol/GravityDepth.java b/src/org/atriasoft/ewol/GravityDepth.java
new file mode 100644
index 0000000..b7b6eed
--- /dev/null
+++ b/src/org/atriasoft/ewol/GravityDepth.java
@@ -0,0 +1,7 @@
+package org.atriasoft.ewol;
+
+public enum GravityDepth {
+ BACK, //!< gravity is in center
+ CENTER, //!< gravity is in right
+ FRONT, //
+}
\ No newline at end of file
diff --git a/src/org/atriasoft/ewol/GravityHorizontal.java b/src/org/atriasoft/ewol/GravityHorizontal.java
new file mode 100644
index 0000000..07b808f
--- /dev/null
+++ b/src/org/atriasoft/ewol/GravityHorizontal.java
@@ -0,0 +1,7 @@
+package org.atriasoft.ewol;
+
+public enum GravityHorizontal {
+ CENTER, //!< gravity is in right
+ LEFT, //!< gravity is in left
+ RIGHT, //!< gravity is in top-right
+}
\ No newline at end of file
diff --git a/src/org/atriasoft/ewol/GravityVertical.java b/src/org/atriasoft/ewol/GravityVertical.java
new file mode 100644
index 0000000..c6ad202
--- /dev/null
+++ b/src/org/atriasoft/ewol/GravityVertical.java
@@ -0,0 +1,7 @@
+package org.atriasoft.ewol;
+
+public enum GravityVertical {
+ BOTTOM, //!< gravity is in bottom
+ CENTER, //!< gravity is in right
+ TOP, //!< gravity is in top-left
+}
\ No newline at end of file
diff --git a/src/org/atriasoft/ewol/Padding.java b/src/org/atriasoft/ewol/Padding.java
index b3f201f..c20f37f 100644
--- a/src/org/atriasoft/ewol/Padding.java
+++ b/src/org/atriasoft/ewol/Padding.java
@@ -6,43 +6,53 @@
package org.atriasoft.ewol;
/**
- * @breif Simple class to abstarct the padding porperty.
+ * Simple class to abstract the padding property.
*/
-@SuppressWarnings("preview")
public record Padding(
float left,
float top,
float right,
- float bottom // !< this represent the 4 padding value Left top right buttom (like css)
-) {
+ float bottom, // !< this represent the 4 padding value Left top right buttom (like css)
+ float front,
+ float back) {
- public static final Padding ZERO = new Padding(0, 0, 0, 0);
+ public static final Padding ZERO = new Padding(0, 0, 0, 0, 0, 0);
public Padding() {
- this(0, 0, 0, 0);
+ this(0, 0, 0, 0, 0, 0);
}
public Padding(final float left) {
- this(left, 0, 0, 0);
+ this(left, 0, 0, 0, 0, 0);
}
public Padding(final float left, final float top) {
- this(left, top, 0, 0);
+ this(left, top, 0, 0, 0, 0);
}
public Padding(final float left, final float top, final float right) {
- this(left, top, right, 0);
+ this(left, top, right, 0, 0, 0);
}
public Padding(final float left, final float top, final float right, final float bottom) {
+ this(left, top, right, bottom, 0, 0);
+ }
+
+ public Padding(final double left, final double top, final double right, final double bottom) {
+ this((float) left, (float) top, (float) right, (float) bottom, 0, 0);
+ }
+
+ public Padding(final float left, final float top, final float right, final float bottom, final float front) {
+ this(left, top, right, bottom, front, 0);
+ }
+
+ public Padding(final float left, final float top, final float right, final float bottom, final float front, final float back) {
this.left = left;
this.top = top;
this.right = right;
this.bottom = bottom;
- }
-
- public Padding(final double left, final double top, final double right, final double bottom) {
- this((float) left, (float) top, (float) right, (float) bottom);
+ this.front = front;
+ this.back = back;
}
/**
@@ -50,28 +60,36 @@ public record Padding(
* @param v The vector to add to this one
*/
public Padding add(final Padding v) {
- return new Padding(this.left + v.left, this.top + v.top, this.right + v.right, this.bottom + v.bottom);
+ return new Padding(this.left + v.left, this.top + v.top, this.right + v.right, this.bottom + v.bottom, this.front + v.front, this.back + v.back);
}
public Padding withLeft(final float left) {
- return new Padding(left, this.top, this.right, this.bottom);
+ return new Padding(left, this.top, this.right, this.bottom, this.front, this.back);
}
public Padding withRight(final float right) {
- return new Padding(this.left, this.top, right, this.bottom);
+ return new Padding(this.left, this.top, right, this.bottom, this.front, this.back);
}
- public Padding withButtom(final float bottom) {
- return new Padding(this.left, this.top, this.right, bottom);
+ public Padding withBottom(final float bottom) {
+ return new Padding(this.left, this.top, this.right, bottom, this.front, this.back);
}
public Padding withTop(final float top) {
- return new Padding(this.left, top, this.right, this.bottom);
+ return new Padding(this.left, top, this.right, this.bottom, this.front, this.back);
+ }
+
+ public Padding withFront(final float front) {
+ return new Padding(this.left, this.top, this.right, this.bottom, front, this.back);
+ }
+
+ public Padding withBack(final float back) {
+ return new Padding(this.left, this.top, this.right, this.bottom, this.front, back);
}
@Override
public String toString() {
- return "{" + left() + "," + top() + "," + right() + "," + bottom() + "}";
+ return "{" + left() + "," + top() + "," + right() + "," + bottom() + "," + front() + "," + back() + "}";
}
public float x() {
@@ -82,4 +100,8 @@ public record Padding(
return this.top + this.bottom;
}
+ public float z() {
+ return this.front + this.back;
+ }
+
}
diff --git a/src/org/atriasoft/ewol/context/EwolContext.java b/src/org/atriasoft/ewol/context/EwolContext.java
index c4b637a..72a94b9 100644
--- a/src/org/atriasoft/ewol/context/EwolContext.java
+++ b/src/org/atriasoft/ewol/context/EwolContext.java
@@ -10,6 +10,7 @@ import java.time.Clock;
import org.atriasoft.etk.Uri;
import org.atriasoft.etk.math.Vector2f;
import org.atriasoft.etk.math.Vector2i;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.etranslate.ETranslate;
import org.atriasoft.ewol.event.EntrySystem;
import org.atriasoft.ewol.internal.Log;
@@ -76,7 +77,7 @@ public class EwolContext extends GaleApplication {
return;
}
final Vector2f size = getSize();
- this.windowsCurrent.setSize(new Vector2f((int) size.x(), (int) size.y()));
+ this.windowsCurrent.setSize(new Vector3f((int) size.x(), (int) size.y(), 0));
this.windowsCurrent.onChangeSize();
}
@@ -291,6 +292,7 @@ public class EwolContext extends GaleApplication {
appl.onPause(this);
Log.info(" == > Ewol system pause (END)");
}
+
@Override
public void onPeriod(final Clock clock, final long time) {
this.objectManager.timeCall(clock, time);
diff --git a/src/org/atriasoft/ewol/context/InputManager.java b/src/org/atriasoft/ewol/context/InputManager.java
index e107333..a0b85b0 100644
--- a/src/org/atriasoft/ewol/context/InputManager.java
+++ b/src/org/atriasoft/ewol/context/InputManager.java
@@ -9,6 +9,7 @@ import java.lang.ref.WeakReference;
import org.atriasoft.etk.math.FMath;
import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.event.InputSystem;
import org.atriasoft.ewol.internal.Log;
import org.atriasoft.ewol.widget.Widget;
@@ -27,7 +28,7 @@ class InputLimit {
class InputManager {
private static final long MILLI_TO_DURATION = 1000000;
- private static final long SECONDS_TO_DURATION = 1000000000;
+ private static final long SECONDS_TO_DURATION = 1000000000;
private static final int MAX_MANAGE_INPUT = 15;
private final EwolContext context;
private int dpi;
@@ -36,7 +37,7 @@ class InputManager {
private final InputLimit eventMouseLimit = new InputLimit();
private final InputPoperty[] eventMouseSaved = new InputPoperty[InputManager.MAX_MANAGE_INPUT];
- // special grab pointer mode :
+ // special grab pointer mode :
private WeakReference grabWidget = null; //!< widget that grab the curent pointer.
private KeySpecial specialKey;
@@ -87,7 +88,7 @@ class InputManager {
return;
}
this.grabWidget = new WeakReference<>(widget);
- /* TODO :
+ /* TODO :
this.context.grabPointerEvents(true, widget.getOrigin()
+ Vector2i(widget.getSize().x/2.0f,
widget.getSize().y/2.0f) );
@@ -174,7 +175,7 @@ class InputManager {
// grab all events ...
tmpWidget = this.grabWidget.get();
} else if (tmpWindows != null) {
- tmpWidget = tmpWindows.getWidgetAtPos(pos);
+ tmpWidget = tmpWindows.getWidgetAtPos(new Vector3f(pos.x(), pos.y(), 0));
}
if (eventTable[pointerID].curentWidgetEvent != null && tmpWidget != eventTable[pointerID].curentWidgetEvent.get()
|| (eventTable[pointerID].isInside && (eventTable[pointerID].origin.x() > pos.x() || eventTable[pointerID].origin.y() > pos.y()
@@ -307,7 +308,7 @@ class InputManager {
if (tmpWidget != null && type == KeyType.mouse) {
eventTable[pointerID].curentWidgetEvent = new WeakReference<>(tmpWidget);
} else {
- tmpWidget = tmpWindows.getWidgetAtPos(pos);
+ tmpWidget = tmpWindows.getWidgetAtPos(new Vector3f(pos.x(), pos.y(), 0));
eventTable[pointerID].curentWidgetEvent = new WeakReference<>(tmpWidget);
/*
if (tmpWidget != null) {
@@ -432,7 +433,7 @@ class InputManager {
*/
public void unGrabPointer() {
this.grabWidget = null;
- // TODO this.context.grabPointerEvents(false, Vector2f(0,0));
+ // TODO this.context.grabPointerEvents(false, Vector3f(0,0));
}
}
@@ -449,17 +450,17 @@ class InputPoperty {
public boolean isUsed = false;
public long lastTimeEvent = 0; // in ns
public int nbClickEvent = 0; // 0 .. 1 .. 2 .. 3
- public Vector2f origin = Vector2f.ZERO;
+ public Vector3f origin = Vector3f.ZERO;
public Vector2f posEvent = Vector2f.ZERO;
- public Vector2f size = Vector2f.MAX_VALUE;
+ public Vector3f size = Vector3f.MAX_VALUE;
public void clear() {
this.isUsed = false;
this.destinationInputId = 0;
this.lastTimeEvent = System.nanoTime();
this.curentWidgetEvent = null;
- this.origin = Vector2f.ZERO;
- this.size = Vector2f.MAX_VALUE;
+ this.origin = Vector3f.ZERO;
+ this.size = Vector3f.MAX_VALUE;
this.downStart = Vector2f.ZERO;
this.isDown = false;
this.isInside = false;
diff --git a/src/org/atriasoft/ewol/event/EventInput.java b/src/org/atriasoft/ewol/event/EventInput.java
index 31f27a0..2a89761 100644
--- a/src/org/atriasoft/ewol/event/EventInput.java
+++ b/src/org/atriasoft/ewol/event/EventInput.java
@@ -12,10 +12,10 @@ import org.atriasoft.gale.key.KeyType;
*/
public record EventInput(
- KeyType type,
- KeyStatus status,
- int inputId,
- Vector2f pos,
- KeySpecial specialKey) {
+ KeyType type,
+ KeyStatus status,
+ int inputId,
+ Vector2f pos,
+ KeySpecial specialKey) {
}
diff --git a/src/org/atriasoft/ewol/event/InputSystem.java b/src/org/atriasoft/ewol/event/InputSystem.java
index de12053..eb49890 100644
--- a/src/org/atriasoft/ewol/event/InputSystem.java
+++ b/src/org/atriasoft/ewol/event/InputSystem.java
@@ -6,7 +6,6 @@ import org.atriasoft.gale.key.KeySpecial;
import org.atriasoft.gale.key.KeyStatus;
import org.atriasoft.gale.key.KeyType;
-@SuppressWarnings("preview")
public record InputSystem(
EventInput event,
Widget dest,
diff --git a/src/org/atriasoft/ewol/widget/Button.java b/src/org/atriasoft/ewol/widget/Button.java
index fd404e8..fb9f1aa 100644
--- a/src/org/atriasoft/ewol/widget/Button.java
+++ b/src/org/atriasoft/ewol/widget/Button.java
@@ -1,18 +1,18 @@
package org.atriasoft.ewol.widget;
import org.atriasoft.esignal.Connection;
+import org.atriasoft.esignal.Signal;
import org.atriasoft.esignal.SignalEmpty;
-import org.atriasoft.etk.Color;
import org.atriasoft.etk.Uri;
-import org.atriasoft.etk.math.Vector2f;
-import org.atriasoft.etk.math.Vector2i;
+import org.atriasoft.etk.math.Vector3b;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.Gravity;
import org.atriasoft.ewol.Padding;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.annotation.EwolSignal;
-import org.atriasoft.ewol.compositing.CompositingGraphicContext;
import org.atriasoft.ewol.compositing.GuiShape;
import org.atriasoft.ewol.compositing.GuiShapeMode;
+import org.atriasoft.ewol.event.EventEntry;
import org.atriasoft.ewol.event.EventInput;
import org.atriasoft.ewol.event.EventTime;
import org.atriasoft.ewol.internal.Log;
@@ -20,6 +20,7 @@ import org.atriasoft.ewol.object.EwolObject;
import org.atriasoft.exml.annotation.XmlAttribute;
import org.atriasoft.exml.annotation.XmlManaged;
import org.atriasoft.exml.annotation.XmlName;
+import org.atriasoft.gale.key.KeyKeyboard;
import org.atriasoft.gale.key.KeyStatus;
/**
@@ -32,10 +33,28 @@ import org.atriasoft.gale.key.KeyStatus;
* ----------------------------------------------
* ~~~~~~~~~~~~~~~~~~~~~~
*/
-public class Button extends Widget {
+public class Button extends ContainerToggle {
+ public enum ButtonLock {
+ LOCK_NONE, //!< normal status of the button
+ LOCK_WHEN_PRESSED, //!< When the state is set in pressed, the status stay in this one
+ LOCK_WHEN_RELEASED, //!< When the state is set in not pressed, the status stay in this one
+ LOCK_ACCESS, //!< all event are trashed == > acctivity of the button is disable
+ }
+
+ public static Button createLabelButton(final String label) {
+ final Button out = new Button();
+ final Label labelWidget = new Label();
+ labelWidget.setPropertyFill(Vector3b.FALSE);
+ labelWidget.setPropertyExpand(Vector3b.FALSE);
+ labelWidget.setPropertyGravity(Gravity.CENTER);
+ labelWidget.setPropertyValue(label);
+ out.setSubWidget(labelWidget, 0);
+ return out;
+ }
+
/**
* Periodic call to update grapgic display
- * @param _event Time generic event
+ * @param event Time generic event
*/
protected static void periodicCall(final Button self, final EventTime event) {
Log.verbose("Periodic call on Entry(" + event + ")");
@@ -45,37 +64,43 @@ public class Button extends Widget {
self.markToRedraw();
}
- /// color property of the text foreground
- private int colorIdTextFg;
- /// text display this.text
- private final CompositingGraphicContext gc = new CompositingGraphicContext();
/// Periodic call handle to remove it when needed
protected Connection periodicConnectionHanble = new Connection();
private Uri propertyConfig = new Uri("THEME", "shape/Button.json", "ewol");
+ private boolean propertyValue = false;
+ private ButtonLock propertyLock = ButtonLock.LOCK_NONE;
+ private boolean propertyToggleMode = false;
+ private boolean propertyEnableSingle = false;
- private String propertyValue = "Test Text..."; //!< string that must be displayed
private GuiShape shape;
+
@EwolSignal(name = "down", description = "Button is Down")
public SignalEmpty signalDown = new SignalEmpty();
@EwolSignal(name = "up", description = "Button is Up")
public SignalEmpty signalUp = new SignalEmpty();
-
@EwolSignal(name = "click", description = "Button is Clicked")
public SignalEmpty signalClick = new SignalEmpty();
- // element over:
- Vector2f overPositionStart = Vector2f.ZERO;
- Vector2f overPositionStop = Vector2f.ZERO;
+ @EwolSignal(name = "enter", description = "The cursor enter inside the button")
+ public SignalEmpty signalEnter = new SignalEmpty();
+ @EwolSignal(name = "leave", description = "The cursor leave the button")
+ public SignalEmpty signalLeave = new SignalEmpty();
+ @EwolSignal(name = "value", description = "The button value change")
+ public Signal signalValue = new Signal<>();
- private boolean isDown;
+ // element over:
+ Vector3f overPositionStart = Vector3f.ZERO;
+ Vector3f overPositionStop = Vector3f.ZERO;
+
+ private boolean buttonPressed = false;
+ private boolean mouseHover = false;
/**
- * Constuctor
+ * Constructor
*/
public Button() {
this.propertyCanFocus = true;
onChangePropertyShaper();
- markToRedraw();
// can not support multiple click...
setMouseLimit(1);
this.shape = new GuiShape(this.propertyConfig);
@@ -90,29 +115,40 @@ public class Button extends Widget {
if (this.shape != null) {
padding = this.shape.getPadding();
}
- Vector2i minHeight = this.gc.calculateTextSize(this.propertyValue);
-
- Vector2f minimumSizeBase = new Vector2f(minHeight.x(), minHeight.y());
- // add padding :
- minimumSizeBase = minimumSizeBase.add(padding.x(), padding.y());
- this.minSize = Vector2f.max(this.minSize, minimumSizeBase);
- // verify the min max of the min size ...
- checkMinSize();
- Log.error("min size = " + this.minSize);
+ calculateMinMaxSizePadded(padding);
}
protected void changeStatusIn(final GuiShapeMode newStatusId) {
if (this.shape.changeStatusIn(newStatusId)) {
if (!this.periodicConnectionHanble.isConnected()) {
- //Log.error("REQUEST: connection on operiodic call");
+ //Log.error("REQUEST: connection on periodic call");
this.periodicConnectionHanble = EwolObject.getObjectManager().periodicCall.connect(this, Button::periodicCall);
}
markToRedraw();
}
+
}
- private boolean checkIfOver(Vector2f relPos) {
- return relPos.x() > this.overPositionStart.x() && relPos.y() > this.overPositionStart.y() && relPos.x() < this.overPositionStop.x() && relPos.y() < this.overPositionStop.y();
+ private boolean checkIfOver(final Vector3f relPos) {
+ return relPos.x() > this.overPositionStart.x() //
+ && relPos.y() > this.overPositionStart.y() //
+ && relPos.x() < this.overPositionStop.x() //
+ && relPos.y() < this.overPositionStop.y();
+ }
+
+ void checkStatus() {
+ if (this.buttonPressed) {
+ changeStatusIn(GuiShapeMode.SELECT);
+ return;
+ }
+ if (this.mouseHover) {
+ changeStatusIn(GuiShapeMode.OVER);
+ return;
+ }
+ if (this.propertyValue) {
+ changeStatusIn(GuiShapeMode.NORMAL);
+ }
+ changeStatusIn(GuiShapeMode.NONE);
}
@XmlManaged
@@ -123,51 +159,146 @@ public class Button extends Widget {
return this.propertyConfig;
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "lock")
+ @EwolDescription(value = "Lock the button in a special state to permit changing state only by the coder")
+ public ButtonLock getPropertyLock() {
+ return this.propertyLock;
+ }
+
@XmlManaged
@XmlAttribute
@XmlName(value = "value")
@EwolDescription(value = "Value display in the entry (decorated text)")
- public String getPropertyValue() {
+ public boolean getPropertyValue() {
return this.propertyValue;
}
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "enable-single")
+ @EwolDescription(value = "If one element set in the Button ==> display only set")
+ public boolean isPropertyEnableSingle() {
+ return this.propertyEnableSingle;
+ }
+
+ @XmlManaged
+ @XmlAttribute
+ @XmlName(value = "toggle")
+ @EwolDescription(value = "The button can toggle")
+ public boolean isPropertyToggleMode() {
+ return this.propertyToggleMode;
+ }
+
+ void onChangePropertyEnableSingle() {
+ if (this.propertyEnableSingle) {
+ if (this.idWidgetDisplayed == 0 && this.subWidget[0] == null && this.subWidget[1] != null) {
+ this.idWidgetDisplayed = 1;
+ } else if (this.idWidgetDisplayed == 1 && this.subWidget[1] == null && this.subWidget[0] != null) {
+ this.idWidgetDisplayed = 0;
+ } else if (this.subWidget[0] == null && this.subWidget[1] == null) {
+ this.idWidgetDisplayed = 0;
+ }
+ }
+ }
+
+ void onChangePropertyLock() {
+ if (ButtonLock.LOCK_ACCESS == this.propertyLock) {
+ this.buttonPressed = false;
+ this.mouseHover = false;
+ }
+ checkStatus();
+ markToRedraw();
+ }
+
protected void onChangePropertyShaper() {
if (this.shape == null) {
this.shape = new GuiShape(this.propertyConfig);
} else {
this.shape.setSource(this.propertyConfig);
}
+ markToRedraw();
}
- protected void onChangePropertyTextWhenNothing() {
+ void onChangePropertyToggleMode() {
+ this.propertyValue = !this.propertyValue;
+ if (!this.propertyToggleMode) {
+ this.idWidgetDisplayed = 0;
+ } else {
+ if (!this.propertyValue) {
+ this.idWidgetDisplayed = 0;
+ } else {
+ this.idWidgetDisplayed = 1;
+ }
+ }
+ if (this.propertyEnableSingle) {
+ if (this.idWidgetDisplayed == 0 && this.subWidget[0] == null && this.subWidget[1] != null) {
+ this.idWidgetDisplayed = 1;
+ } else if (this.idWidgetDisplayed == 1 && this.subWidget[1] == null && this.subWidget[0] != null) {
+ this.idWidgetDisplayed = 0;
+ }
+ }
+ checkStatus();
markToRedraw();
}
protected void onChangePropertyValue() {
- String newData = this.propertyValue;
+ if (this.propertyToggleMode) {
+ if (!this.propertyValue) {
+ this.idWidgetDisplayed = 0;
+ } else {
+ this.idWidgetDisplayed = 1;
+ }
+ }
+ if (this.propertyEnableSingle) {
+ if (this.idWidgetDisplayed == 0 && this.subWidget[0] == null && this.subWidget[1] != null) {
+ this.idWidgetDisplayed = 1;
+ } else if (this.idWidgetDisplayed == 1 && this.subWidget[1] == null && this.subWidget[0] != null) {
+ this.idWidgetDisplayed = 0;
+ }
+ }
+ checkStatus();
markToRedraw();
}
+ @Override
+ public void onChangeSize() {
+ final Padding padding = this.shape.getPadding();
+ onChangeSizePadded(padding);
+ }
+
@Override
protected void onDraw() {
if (this.shape != null) {
- this.shape.draw(this.gc.getResourceTexture(), true);
+ this.shape.draw(true);
}
+ super.onDraw();
+ }
+
+ @Override
+ protected boolean onEventEntry(final EventEntry event) {
+ //Log.debug("BT PRESSED : \"" << UTF8_data << "\" size=" << strlen(UTF8_data));
+ if (event.type() == KeyKeyboard.CHARACTER && event.status() == KeyStatus.down && event.getChar() == '\r') {
+ this.signalEnter.emit();
+ return true;
+ }
+ return super.onEventEntry(event);
}
@Override
public boolean onEventInput(final EventInput event) {
- Vector2f relPos = relativePosition(event.pos());
+ final Vector3f relPos = relativePosition(new Vector3f(event.pos().x(), event.pos().y(), 0));
Log.warning("Event on Input ... " + event + " relPos = " + relPos);
- boolean over = checkIfOver(relPos);
+ final boolean over = checkIfOver(relPos);
//filter if outside the element...
if (event.status() == KeyStatus.leave) {
changeStatusIn(GuiShapeMode.NORMAL);
- this.isDown = false;
+ this.buttonPressed = false;
return true;
}
if (event.inputId() == 0) {
- if (!this.isDown) {
+ if (!this.buttonPressed) {
if (KeyStatus.leave == event.status()) {
changeStatusIn(GuiShapeMode.NORMAL);
} else {
@@ -191,7 +322,7 @@ public class Button extends Widget {
}
if (KeyStatus.down == event.status() && over) {
keepFocus();
- this.isDown = true;
+ this.buttonPressed = true;
changeStatusIn(GuiShapeMode.SELECT);
markToRedraw();
this.signalDown.emit();
@@ -202,9 +333,9 @@ public class Button extends Widget {
markToRedraw();
return true;
}
- if (KeyStatus.up == event.status() && this.isDown) {
+ if (KeyStatus.up == event.status() && this.buttonPressed) {
keepFocus();
- this.isDown = false;
+ this.buttonPressed = false;
this.signalUp.emit();
changeStatusIn(GuiShapeMode.OVER);
markToRedraw();
@@ -213,24 +344,25 @@ public class Button extends Widget {
return false;
}
+ @Override
+ protected void onLostFocus() {
+ this.buttonPressed = false;
+ Log.verbose(this.name + " : Remove Focus ...");
+ checkStatus();
+ }
+
@Override
public void onRegenerateDisplay() {
+ super.onRegenerateDisplay();
if (!needRedraw()) {
//return;
}
//Log.verbose("Regenerate Display ==> is needed: '" + this.propertyValue + "'");
this.shape.clear();
- this.gc.clear();
- if (this.colorIdTextFg >= 0) {
- //this.text.setDefaultColorFg(this.shape.getColor(this.colorIdTextFg));
- //this.text.setDefaultColorBg(this.shape.getColor(this.colorIdTextBg));
- //this.text.setCursorColor(this.shape.getColor(this.colorIdCursor));
- //this.text.setSelectionColor(this.shape.getColor(this.colorIdSelection));
- }
- Padding padding = this.shape.getPadding();
+ final Padding padding = this.shape.getPadding();
- Vector2f tmpSizeShaper = this.minSize;
- Vector2f delta = Gravity.gravityGenerateDelta(this.propertyGravity, this.size.less(this.minSize));
+ Vector3f tmpSizeShaper = this.minSize;
+ Vector3f delta = this.propertyGravity.gravityGenerateDelta(this.size.less(this.minSize));
if (this.propertyFill.x()) {
tmpSizeShaper = tmpSizeShaper.withX(this.size.x());
delta = delta.withX(0.0f);
@@ -240,65 +372,23 @@ public class Button extends Widget {
delta = delta.withY(0.0f);
}
- Vector2f tmpOriginShaper = delta;
- Vector2f tmpSizeText = tmpSizeShaper.less(padding.x(), padding.y());
- //Vector2f tmpOriginText = this.size.less(tmpSizeText).multiply(0.5f);
- Vector2f tmpOriginText = new Vector2f(0, this.gc.getTextSize());
- // sometimes, the user define an height bigger than the real size needed == > in this case we need to center the text in the shaper ...
- /*
- int minHeight = this.gc.getTextHeight();
- if (tmpSizeText.y() > minHeight) {
- tmpOriginText = tmpOriginText.add(0, (tmpSizeText.y() - minHeight) * 0.5f);
- }
- */
- // fix all the position in the int class:
- tmpSizeShaper = Vector2f.clipInt(tmpSizeShaper);
- tmpOriginShaper = Vector2f.clipInt(tmpOriginShaper);
- tmpSizeText = Vector2f.clipInt(tmpSizeText);
- tmpOriginText = Vector2f.clipInt(tmpOriginText);
+ Vector3f tmpOriginShaper = delta;
+ Vector3f tmpSizeText = tmpSizeShaper.less(padding.x(), padding.y(), padding.z());
+ //Vector3f tmpOriginText = this.size.less(tmpSizeText).multiply(0.5f);
+ Vector3f tmpOriginText = new Vector3f(0, 0, 0);
+ // not sure this is needed...
+ tmpSizeShaper = Vector3f.clipInt(tmpSizeShaper);
+ tmpOriginShaper = Vector3f.clipInt(tmpOriginShaper);
+ tmpSizeText = Vector3f.clipInt(tmpSizeText);
+ tmpOriginText = Vector3f.clipInt(tmpOriginText);
- this.gc.clear();
- this.gc.setSize((int) tmpSizeText.x(), (int) tmpSizeText.y());
-
- this.gc.setColorFill(Color.BLACK);
- this.gc.setColorStroke(Color.NONE);
- this.gc.setStrokeWidth(1);
- this.gc.text(tmpOriginText, this.propertyValue);
this.overPositionStart = tmpOriginShaper;
this.overPositionStop = tmpOriginShaper.add(tmpSizeShaper);
this.shape.setShape(tmpOriginShaper, tmpSizeShaper, tmpOriginText, tmpSizeText);
- this.gc.flush();
this.shape.flush();
}
- /**
- * internal check the value with RegExp checking
- * @param newData The new string to display
- */
- protected void setInternalValue(final String newData) {
- String previous = this.propertyValue;
- // check the RegExp :
- if (newData.length() > 0) {
- /*
- if (this.regex.parse(_newData, 0, _newData.size()) == false) {
- Log.info("The input data does not match with the regExp '" + _newData + "' Regex='" + propertyRegex + "'" );
- return;
- }
- if (this.regex.start() != 0) {
- Log.info("The input data does not match with the regExp '" + _newData + "' Regex='" + propertyRegex + "' (start position error)" );
- return;
- }
- if (this.regex.stop() != _newData.size()) {
- Log.info("The input data does not match with the regExp '" + _newData + "' Regex='" + propertyRegex + "' (stop position error)" );
- return;
- }
- */
- }
- this.propertyValue = newData;
- markToRedraw();
- }
-
public void setPropertyConfig(final Uri propertyConfig) {
if (this.propertyConfig.equals(propertyConfig)) {
return;
@@ -307,8 +397,23 @@ public class Button extends Widget {
onChangePropertyShaper();
}
- public void setPropertyValue(final String propertyValue) {
- if (this.propertyValue.equals(propertyValue)) {
+ public void setPropertyEnableSingle(final boolean propertyEnableSingle) {
+ this.propertyEnableSingle = propertyEnableSingle;
+ markToRedraw();
+ }
+
+ public void setPropertyLock(final ButtonLock propertyLock) {
+ this.propertyLock = propertyLock;
+ markToRedraw();
+ }
+
+ public void setPropertyToggleMode(final boolean propertyToggleMode) {
+ this.propertyToggleMode = propertyToggleMode;
+ markToRedraw();
+ }
+
+ public void setPropertyValue(final boolean propertyValue) {
+ if (this.propertyValue == propertyValue) {
return;
}
this.propertyValue = propertyValue;
diff --git a/src/org/atriasoft/ewol/widget/CheckBox.java b/src/org/atriasoft/ewol/widget/CheckBox.java
index 7f123cc..0b0ea06 100644
--- a/src/org/atriasoft/ewol/widget/CheckBox.java
+++ b/src/org/atriasoft/ewol/widget/CheckBox.java
@@ -4,9 +4,8 @@ import org.atriasoft.esignal.Connection;
import org.atriasoft.esignal.Signal;
import org.atriasoft.esignal.SignalEmpty;
import org.atriasoft.etk.Uri;
-import org.atriasoft.etk.math.Vector2f;
-import org.atriasoft.etk.math.Vector2i;
-import org.atriasoft.ewol.Gravity;
+import org.atriasoft.etk.math.Vector3f;
+import org.atriasoft.etk.math.Vector3i;
import org.atriasoft.ewol.Padding;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.annotation.EwolSignal;
@@ -74,8 +73,8 @@ public class CheckBox extends Widget {
@EwolSignal(name = "value", description = "CheckBox value change")
public Signal signalValue;
// element over:
- Vector2f overPositionStart = Vector2f.ZERO;
- Vector2f overPositionStop = Vector2f.ZERO;
+ Vector3f overPositionStart = Vector3f.ZERO;
+ Vector3f overPositionStop = Vector3f.ZERO;
private boolean isDown;
@@ -100,12 +99,12 @@ public class CheckBox extends Widget {
if (this.shape != null) {
padding = this.shape.getPadding();
}
- Vector2i minHeight = Vector2i.VALUE_16;
+ Vector3i minHeight = Vector3i.VALUE_16;
- Vector2f minimumSizeBase = new Vector2f(minHeight.x(), minHeight.y());
+ Vector3f minimumSizeBase = new Vector3f(minHeight.x(), minHeight.y(), minHeight.z());
// add padding :
- minimumSizeBase = minimumSizeBase.add(padding.x(), padding.y());
- this.minSize = Vector2f.max(this.minSize, minimumSizeBase);
+ minimumSizeBase = minimumSizeBase.add(padding.x(), padding.y(), padding.z());
+ this.minSize = Vector3f.max(this.minSize, minimumSizeBase);
// verify the min max of the min size ...
checkMinSize();
Log.error("min size = " + this.minSize);
@@ -121,7 +120,7 @@ public class CheckBox extends Widget {
}
}
- private boolean checkIfOver(Vector2f relPos) {
+ private boolean checkIfOver(Vector3f relPos) {
return relPos.x() > this.overPositionStart.x() && relPos.y() > this.overPositionStart.y() && relPos.x() < this.overPositionStop.x() && relPos.y() < this.overPositionStop.y();
}
@@ -167,7 +166,8 @@ public class CheckBox extends Widget {
@Override
public boolean onEventInput(final EventInput event) {
- Vector2f relPos = relativePosition(event.pos());
+ Vector3f positionAbsolute = new Vector3f(event.pos().x(), event.pos().y(), 0);
+ Vector3f relPos = relativePosition(positionAbsolute);
Log.warning("Event on Input ... " + event + " relPos = " + relPos);
boolean over = checkIfOver(relPos);
//filter if outside the element...
@@ -240,8 +240,8 @@ public class CheckBox extends Widget {
}
Padding padding = this.shape.getPadding();
- Vector2f tmpSizeShaper = this.minSize;
- Vector2f delta = Gravity.gravityGenerateDelta(this.propertyGravity, this.size.less(this.minSize));
+ Vector3f tmpSizeShaper = this.minSize;
+ Vector3f delta = this.propertyGravity.gravityGenerateDelta(this.size.less(this.minSize));
if (this.propertyFill.x()) {
tmpSizeShaper = tmpSizeShaper.withX(this.size.x());
delta = delta.withX(0.0f);
@@ -251,10 +251,10 @@ public class CheckBox extends Widget {
delta = delta.withY(0.0f);
}
- Vector2f tmpOriginShaper = delta;
- Vector2f tmpSizeInside = tmpSizeShaper.less(padding.x(), padding.y());
- //Vector2f tmpOriginText = this.size.less(tmpSizeText).multiply(0.5f);
- Vector2f tmpOriginInside = new Vector2f(0, 0);//this.gc.getTextSize());
+ Vector3f tmpOriginShaper = delta;
+ Vector3f tmpSizeInside = tmpSizeShaper.less(padding.x(), padding.y(), padding.z());
+ //Vector3f tmpOriginText = this.size.less(tmpSizeText).multiply(0.5f);
+ Vector3f tmpOriginInside = Vector3f.ZERO;//this.gc.getTextSize());
// sometimes, the user define an height bigger than the real size needed == > in this case we need to center the text in the shaper ...
/*
int minHeight = this.gc.getTextHeight();
@@ -263,10 +263,10 @@ public class CheckBox extends Widget {
}
*/
// fix all the position in the int class:
- tmpSizeShaper = Vector2f.clipInt(tmpSizeShaper);
- tmpOriginShaper = Vector2f.clipInt(tmpOriginShaper);
- tmpSizeInside = Vector2f.clipInt(tmpSizeInside);
- tmpOriginInside = Vector2f.clipInt(tmpOriginInside);
+ tmpSizeShaper = Vector3f.clipInt(tmpSizeShaper);
+ tmpOriginShaper = Vector3f.clipInt(tmpOriginShaper);
+ tmpSizeInside = Vector3f.clipInt(tmpSizeInside);
+ tmpOriginInside = Vector3f.clipInt(tmpOriginInside);
//this.gc.clear();
//this.gc.setSize((int)tmpSizeText.x(), (int)tmpSizeText.y());
diff --git a/src/org/atriasoft/ewol/widget/Container.java b/src/org/atriasoft/ewol/widget/Container.java
index 4abba16..7f970a5 100644
--- a/src/org/atriasoft/ewol/widget/Container.java
+++ b/src/org/atriasoft/ewol/widget/Container.java
@@ -5,10 +5,9 @@
*/
package org.atriasoft.ewol.widget;
-import org.atriasoft.etk.math.Vector2b;
-import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.etk.math.Vector3b;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.DrawProperty;
-import org.atriasoft.ewol.Gravity;
import org.atriasoft.ewol.internal.Log;
import org.atriasoft.ewol.object.EwolObject;
@@ -31,8 +30,8 @@ public class Container extends Widget {
// call sub classes
if (this.subWidget != null) {
this.subWidget.calculateMinMaxSize();
- Vector2f min = this.subWidget.getCalculateMinSize();
- this.minSize = Vector2f.max(this.minSize, min);
+ Vector3f min = this.subWidget.getCalculateMinSize();
+ this.minSize = Vector3f.max(this.minSize, min);
}
//Log.error("[" + getId() + "] Result min size : " + this.minSize);
}
@@ -67,7 +66,7 @@ public class Container extends Widget {
}
@Override
- public Widget getWidgetAtPos(final Vector2f pos) {
+ public Widget getWidgetAtPos(final Vector3f pos) {
if (!this.propertyHide) {
if (this.subWidget != null) {
return this.subWidget.getWidgetAtPos(pos);
@@ -130,10 +129,10 @@ public class Container extends Widget {
if (this.subWidget == null) {
return;
}
- Vector2f origin = this.origin.add(this.offset);
- Vector2f minSize = this.subWidget.getCalculateMinSize();
- Vector2b expand = this.subWidget.getPropertyExpand();
- origin = origin.add(Gravity.gravityGenerateDelta(this.propertyGravity, minSize.less(this.size)));
+ Vector3f origin = this.origin.add(this.offset);
+ Vector3f minSize = this.subWidget.getCalculateMinSize();
+ Vector3b expand = this.subWidget.getPropertyExpand();
+ origin = origin.add(this.propertyGravity.gravityGenerateDelta(minSize.less(this.size)));
this.subWidget.setOrigin(origin);
this.subWidget.setSize(this.size);
this.subWidget.onChangeSize();
@@ -160,7 +159,7 @@ public class Container extends Widget {
}
@Override
- public void setOffset(final Vector2f newVal) {
+ public void setOffset(final Vector3f newVal) {
if (this.offset.equals(newVal)) {
return;
}
diff --git a/src/org/atriasoft/ewol/widget/ContainerN.java b/src/org/atriasoft/ewol/widget/ContainerN.java
index f84eb0c..d4c7a0a 100644
--- a/src/org/atriasoft/ewol/widget/ContainerN.java
+++ b/src/org/atriasoft/ewol/widget/ContainerN.java
@@ -10,8 +10,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
-import org.atriasoft.etk.math.Vector2b;
-import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.etk.math.Vector3b;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.DrawProperty;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.internal.Log;
@@ -27,8 +27,8 @@ import org.atriasoft.exml.annotation.XmlName;
*/
public class ContainerN extends Widget {
- protected Vector2b propertyLockExpand = new Vector2b(false, false); //!< Lock the expend of the sub widget to this one == > this permit to limit bigger subWidget
- protected Vector2b subExpend = new Vector2b(false, false); //!< reference of the sub element expention requested.
+ protected Vector3b propertyLockExpand = Vector3b.FALSE; //!< Lock the expend of the sub widget to this one == > this permit to limit bigger subWidget
+ protected Vector3b subExpend = Vector3b.FALSE; //!< reference of the sub element expention requested.
protected List subWidget = new ArrayList<>();
/**
@@ -38,22 +38,22 @@ public class ContainerN extends Widget {
@Override
public void calculateMinMaxSize() {
- this.subExpend = new Vector2b(false, false);
- this.minSize = Vector2f.ZERO;
- this.maxSize = Vector2f.MAX_VALUE;
+ this.subExpend = Vector3b.FALSE;
+ this.minSize = Vector3f.ZERO;
+ this.maxSize = Vector3f.MAX_VALUE;
//Log.error("[" + getId() + "] {" + getObjectType() + "} set min size : " + this.minSize);
for (Widget it : this.subWidget) {
if (it != null) {
it.calculateMinMaxSize();
- Vector2b subExpendProp = it.canExpand();
+ Vector3b subExpendProp = it.canExpand();
if (subExpendProp.x()) {
this.subExpend = this.subExpend.withX(true);
}
if (subExpendProp.y()) {
this.subExpend = this.subExpend.withX(true);
}
- Vector2f tmpSize = it.getCalculateMinSize();
- this.minSize = Vector2f.max(tmpSize, this.minSize);
+ Vector3f tmpSize = it.getCalculateMinSize();
+ this.minSize = Vector3f.max(tmpSize, this.minSize);
}
}
//Log.error("[" + getId() + "] {" + getObjectType() + "} Result min size : " + this.minSize);
@@ -61,8 +61,8 @@ public class ContainerN extends Widget {
// herited function
@Override
- public Vector2b canExpand() {
- Vector2b res = this.propertyExpand;
+ public Vector3b canExpand() {
+ Vector3b res = this.propertyExpand;
if (!this.propertyLockExpand.x()) {
if (this.subExpend.x()) {
res = res.withX(true);
@@ -92,7 +92,7 @@ public class ContainerN extends Widget {
@XmlAttribute
@XmlName(value = "lock")
@EwolDescription(value = "Lock the subwidget expand")
- public Vector2b getPropertyLockExpand() {
+ public Vector3b getPropertyLockExpand() {
return this.propertyLockExpand;
}
@@ -121,15 +121,15 @@ public class ContainerN extends Widget {
}
@Override
- public Widget getWidgetAtPos(final Vector2f pos) {
+ public Widget getWidgetAtPos(final Vector3f pos) {
if (this.propertyHide) {
return null;
}
// for all element in the sizer ...
for (Widget it : this.subWidget) {
if (it != null) {
- Vector2f tmpSize = it.getSize();
- Vector2f tmpOrigin = it.getOrigin();
+ Vector3f tmpSize = it.getSize();
+ Vector3f tmpOrigin = it.getOrigin();
if ((tmpOrigin.x() <= pos.x() && tmpOrigin.x() + tmpSize.x() >= pos.x()) && (tmpOrigin.y() <= pos.y() && tmpOrigin.y() + tmpSize.y() >= pos.y())) {
Widget tmpWidget = it.getWidgetAtPos(pos);
if (tmpWidget != null) {
@@ -184,7 +184,7 @@ public class ContainerN extends Widget {
}
@Override
- public void setOffset(final Vector2f newVal) {
+ public void setOffset(final Vector3f newVal) {
if (this.offset != newVal) {
super.setOffset(newVal);
// recalculate the new sise and position of sub widget ...
@@ -192,7 +192,7 @@ public class ContainerN extends Widget {
}
}
- public void setPropertyLockExpand(final Vector2b propertyLockExpand) {
+ public void setPropertyLockExpand(final Vector3b propertyLockExpand) {
if (propertyLockExpand.equals(this.propertyLockExpand)) {
return;
}
diff --git a/src/org/atriasoft/ewol/widget/ContainerToggle.java b/src/org/atriasoft/ewol/widget/ContainerToggle.java
new file mode 100644
index 0000000..f898da4
--- /dev/null
+++ b/src/org/atriasoft/ewol/widget/ContainerToggle.java
@@ -0,0 +1,307 @@
+/*
+ * @author Edouard DUPIN
+ * @copyright 2011, Edouard DUPIN, all right reserved
+ * @license MPL v2.0 (see license file)
+ */
+package org.atriasoft.ewol.widget;
+
+import org.atriasoft.etk.math.Vector3f;
+import org.atriasoft.ewol.DrawProperty;
+import org.atriasoft.ewol.Padding;
+import org.atriasoft.ewol.internal.Log;
+import org.atriasoft.ewol.object.EwolObject;
+
+/*
+ * @ingroup ewolWidgetGroup
+ * the Cotainer widget is a widget that have an only one subWidget
+ */
+public class ContainerToggle extends Widget {
+ protected Widget[] subWidget = new Widget[2];
+ int idWidgetDisplayed = 0; //!< current widget displayed
+
+ /**
+ * Constructor
+ */
+ public ContainerToggle() {}
+
+ // @Override
+ // public boolean loadXML(final XmlElement node) {
+ // if (node == null) {
+ // return false;
+ // }
+ // // parse generic properties:
+ // super.loadXML(node);
+ // // remove previous element:
+ // subWidgetRemove();
+ // // parse all the elements:
+ // for (XmlNode it : node.getNodes()) {
+ // if (!it.isElement()) {
+ // // trash here all that is not element
+ // continue;
+ // }
+ // XmlElement pNode = it.toElement();
+ // String widgetName = pNode.getValue();
+ // Log.verbose("[" + getId() + "] t=" + getClass().getCanonicalName() + " Load node name : '" + widgetName + "'");
+ // if (!getWidgetManager().exist(widgetName)) {
+ // Log.error("Unknown basic node='" + widgetName + "' not in : [" + getWidgetManager().list() + "]");
+ // continue;
+ // }
+ // if (getSubWidget() != null) {
+ // Log.error("Can only have one subWidget ??? node='" + widgetName + "'");
+ // continue;
+ // }
+ // Log.debug("try to create subwidget : '" + widgetName + "'");
+ // Widget tmpWidget = getWidgetManager().create(widgetName, pNode);
+ // if (tmpWidget == null) {
+ // Log.error("Can not create the widget : '" + widgetName + "'");
+ // continue;
+ // }
+ // // add widget :
+ // setSubWidget(tmpWidget);
+ // if (!tmpWidget.loadXML(pNode)) {
+ // Log.error("can not load widget properties : '" + widgetName + "'");
+ // return false;
+ // }
+ // }
+ // if (node.getNodes().size() != 0 && this.subWidget == null) {
+ // Log.warning("Load container with no data inside");
+ // }
+ // return true;
+ // }
+
+ void calculateMinMaxSizePadded(final Padding padding) {
+ // call main class
+ this.minSize = Vector3f.ZERO;
+ // call sub classes
+ for (int iii = 0; iii < 2; ++iii) {
+ if (this.subWidget[iii] != null) {
+ this.subWidget[iii].calculateMinMaxSize();
+ final Vector3f min = this.subWidget[iii].getCalculateMinSize();
+ this.minSize = this.minSize.max(min);
+ }
+ }
+ // add padding :
+ this.minSize = this.minSize.add(padding.x(), padding.y(), padding.z());
+ // verify the min max of the min size ...
+ checkMinSize();
+ markToRedraw();
+ }
+
+ @Override
+ public void drawWidgetTree(int level) {
+ super.drawWidgetTree(level);
+ level++;
+ if (this.subWidget[0] != null) {
+ this.subWidget[0].drawWidgetTree(level);
+ }
+ if (this.subWidget[1] != null) {
+ this.subWidget[1].drawWidgetTree(level);
+ }
+ }
+
+ @Override
+ public EwolObject getSubObjectNamed(final String widgetName) {
+ EwolObject tmpObject = super.getSubObjectNamed(widgetName);
+ if (tmpObject != null) {
+ return tmpObject;
+ }
+ if (this.subWidget[0] != null) {
+ tmpObject = this.subWidget[0].getSubObjectNamed(widgetName);
+ if (tmpObject != null) {
+ return tmpObject;
+ }
+ }
+ if (this.subWidget[1] != null) {
+ return this.subWidget[1].getSubObjectNamed(widgetName);
+ }
+ return null;
+ }
+
+ public Padding onChangeSizePadded(final Padding padding) {
+ super.onChangeSize();
+ final Vector3f localAvaillable = this.size.less(padding.x(), padding.y(), padding.z());
+ // Checking the filling properties == > for the subElements:
+ Vector3f subElementSize = this.minSize;
+ if (this.propertyFill.x()) {
+ subElementSize = subElementSize.withX(this.size.x());
+ }
+ if (this.propertyFill.y()) {
+ subElementSize = subElementSize.withY(this.size.y());
+ }
+ final Vector3f delta = this.propertyGravity.gravityGenerateDelta(this.size.less(subElementSize));
+ final Vector3f origin = delta.add(padding.left(), padding.bottom(), padding.back());
+ subElementSize = subElementSize.less(padding.x(), padding.y(), padding.z());
+ for (int iii = 0; iii < 2; ++iii) {
+ if (this.subWidget[iii] != null) {
+ Vector3f origin2 = origin.add(this.offset);
+ final Vector3f minSize = this.subWidget[iii].getCalculateMinSize();
+ //Vector2b expand = this.subWidget[iii].propertyExpand.get();
+ origin2 = origin2.add(this.propertyGravity.gravityGenerateDelta(minSize.less(localAvaillable)));
+ this.subWidget[iii].setOrigin(this.origin.add(origin));
+ this.subWidget[iii].setSize(subElementSize);
+ this.subWidget[iii].onChangeSize();
+ }
+ }
+ final Vector3f selectableAreaPos = origin.less(padding.left(), padding.bottom(), padding.back());
+ final Vector3f selectableAreaEndPos = this.size.less(selectableAreaPos.add(subElementSize.add(padding.x(), padding.y(), padding.z())));
+ markToRedraw();
+ return new Padding(selectableAreaPos.x(), selectableAreaEndPos.y(), selectableAreaEndPos.x(), selectableAreaPos.y());
+ }
+
+ @Override
+ public void onRegenerateDisplay() {
+ if (this.subWidget[this.idWidgetDisplayed] != null) {
+ this.subWidget[this.idWidgetDisplayed].onRegenerateDisplay();
+ }
+ }
+ /*
+ boolean loadXML( exml::Element _node) {
+ if (_node.exist() == false) {
+ return false;
+ }
+ // parse generic properties :
+ Widget::loadXML(_node);
+ // remove previous element :
+ subWidgetRemove();
+ Log.verbose("Create en element 2 ... with nodes.size()=" + _node.nodes.size());
+ // parse all the elements:
+ for( auto it : _node.nodes) {
+ Log.verbose(" node: " + it);
+ exml::Element pNode = it.toElement();
+ if (pNode.exist() == false) {
+ // trash here all that is not element
+ continue;
+ }
+ String widgetName = pNode.getValue();
+ if (getWidgetManager().exist(widgetName) == false) {
+ Log.error("(l " + pNode.getPos() + ") Unknown basic node='" + widgetName + "' not in: [" + getWidgetManager().list() + "]" );
+ continue;
+ }
+ boolean toogleMode=false;
+ if (getSubWidget() != null) {
+ toogleMode=true;
+ if (getSubWidgetToggle() != null) {
+ Log.error("(l " + pNode.getPos() + ") Can only have one subWidget ??? node='" + widgetName + "'" );
+ continue;
+ }
+ }
+ Log.debug("try to create subwidget : '" + widgetName + "'");
+ Widget tmpWidget = getWidgetManager().create(widgetName, pNode);
+ if (tmpWidget == null) {
+ EWOL_ERROR ("(l " + pNode.getPos() + ") Can not create the widget: '" + widgetName + "'");
+ continue;
+ }
+ // add widget :
+ if (toogleMode == false) {
+ setSubWidget(tmpWidget);
+ } else {
+ setSubWidgetToggle(tmpWidget);
+ }
+ if (tmpWidget.loadXML(pNode) == false) {
+ EWOL_ERROR ("(l "+pNode.getPos()+") can not load widget properties: '" + widgetName + "'");
+ return false;
+ }
+ }
+ return true;
+ }*/
+
+ @Override
+ public void requestDestroyFromChild(final EwolObject child) {
+ if (this.subWidget[0] == child) {
+ if (this.subWidget[0] == null) {
+ return;
+ }
+ this.subWidget[0].removeParent();
+ this.subWidget[0] = null;
+ markToRedraw();
+ }
+ if (this.subWidget[1] == child) {
+ if (this.subWidget[1] == null) {
+ return;
+ }
+ this.subWidget[1].removeParent();
+ this.subWidget[1] = null;
+ markToRedraw();
+ }
+ }
+
+ @Override
+ public void setOffset(final Vector3f newVal) {
+ if (this.offset.equals(newVal)) {
+ return;
+ }
+ super.setOffset(newVal);
+ // recalculate the new size and position of sub widget ...
+ onChangeSize();
+ }
+
+ /**
+ * set the subWidget node widget.
+ * @param newWidget The widget to add.
+ */
+ public void setSubWidget(final Widget newWidget, final int idWidget) {
+ subWidgetRemove(idWidget);
+ this.subWidget[idWidget] = newWidget;
+ if (this.subWidget[idWidget] != null) {
+ Log.verbose("Add widget : " + idWidget);
+ this.subWidget[idWidget].setParent(this);
+ }
+ markToRedraw();
+ requestUpdateSize();
+ }
+
+ public void subWidgetRemove(final int idWidget) {
+ if (this.subWidget[idWidget] != null) {
+ Log.verbose("Remove widget : " + idWidget);
+ this.subWidget[idWidget].removeParent();
+ this.subWidget[idWidget] = null;
+ markToRedraw();
+ requestUpdateSize();
+ }
+ }
+
+ public void subWidgetReplace(final Widget oldWidget, final Widget newWidget) {
+ boolean haveChange = false;
+ for (int iii = 0; iii < 2; ++iii) {
+ if (this.subWidget[iii] != oldWidget) {
+ continue;
+ }
+ this.subWidget[iii].removeParent();
+ this.subWidget[iii] = newWidget;
+ if (this.subWidget[iii] != null) {
+ this.subWidget[iii].setParent(this);
+ }
+ haveChange = true;
+ }
+ if (!haveChange) {
+ Log.warning("Request replace with a wrong old widget");
+ return;
+ }
+ markToRedraw();
+ requestUpdateSize();
+ }
+
+ public void subWidgetUnLink(final int idWidget) {
+ if (this.subWidget[idWidget] != null) {
+ this.subWidget[idWidget].removeParent();
+ Log.verbose("Unlink widget : " + idWidget);
+ }
+ this.subWidget[idWidget] = null;
+ }
+
+ @Override
+ public void systemDraw(final DrawProperty displayProp) {
+ if (this.propertyHide) {
+ // widget is hidden ...
+ return;
+ }
+ super.systemDraw(displayProp);
+ if (this.subWidget[this.idWidgetDisplayed] != null) {
+ final DrawProperty prop = displayProp.withLimit(this.origin, this.size);
+ //Log.info("Draw : [" + propertyName + "] t=" + getObjectType() + " o=" + this.origin + " s=" + this.size);
+ this.subWidget[this.idWidgetDisplayed].systemDraw(prop);
+ } else {
+ Log.info("[" + getId() + "] ++++++ : [null]");
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/org/atriasoft/ewol/widget/Entry.java b/src/org/atriasoft/ewol/widget/Entry.java
index fd36a2c..df0f518 100644
--- a/src/org/atriasoft/ewol/widget/Entry.java
+++ b/src/org/atriasoft/ewol/widget/Entry.java
@@ -10,6 +10,7 @@ import org.atriasoft.etk.Color;
import org.atriasoft.etk.Uri;
import org.atriasoft.etk.math.FMath;
import org.atriasoft.etk.math.Vector2f;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.Padding;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.annotation.EwolSignal;
@@ -93,9 +94,9 @@ public class Entry extends Widget {
@EwolSignal(name = "modify", description = "Entry box value change")
public Signal signalModify = new Signal<>(); //!< data change
// element over:
- Vector2f overPositionStart = Vector2f.ZERO;
+ Vector3f overPositionStart = Vector3f.ZERO;
- Vector2f overPositionStop = Vector2f.ZERO;
+ Vector3f overPositionStop = Vector3f.ZERO;
/**
* Contuctor
@@ -131,10 +132,10 @@ public class Entry extends Widget {
}
int minHeight = this.gc.getTextHeight();//calculateSize('A').y();
- Vector2f minimumSizeBase = new Vector2f(20, minHeight);
+ Vector3f minimumSizeBase = new Vector3f(20, minHeight, 10);
// add padding :
- minimumSizeBase = minimumSizeBase.add(padding.x(), padding.y());
- this.minSize = Vector2f.max(this.minSize, minimumSizeBase);
+ minimumSizeBase = minimumSizeBase.add(padding.x(), padding.y(), padding.z());
+ this.minSize = Vector3f.max(this.minSize, minimumSizeBase);
// verify the min max of the min size ...
checkMinSize();
Log.error("min size = " + this.minSize);
@@ -409,7 +410,8 @@ public class Entry extends Widget {
@Override
public boolean onEventInput(final EventInput event) {
- Vector2f relPos = relativePosition(event.pos());
+ Vector3f absolutePosition = new Vector3f(event.pos().x(), event.pos().y(), 0);
+ Vector3f relPos = relativePosition(absolutePosition);
Log.verbose("Event on Input ... " + event + " relPos = " + relPos);
if (event.inputId() == 0) {
if (!isFocused()) {
@@ -469,15 +471,15 @@ public class Entry extends Widget {
this.displayCursorPos = this.propertyValue.length();
} else if (KeyStatus.down == event.status()) {
keepFocus();
- updateCursorPosition(event.pos());
+ updateCursorPosition(absolutePosition);
markToRedraw();
} else if (KeyStatus.move == event.status()) {
keepFocus();
- updateCursorPosition(event.pos(), true);
+ updateCursorPosition(absolutePosition, true);
markToRedraw();
} else if (KeyStatus.up == event.status()) {
keepFocus();
- updateCursorPosition(event.pos(), true);
+ updateCursorPosition(absolutePosition, true);
// Copy to clipboard Middle ...
copySelectionToClipBoard(ClipboardList.CLIPBOARD_SELECTION);
markToRedraw();
@@ -486,7 +488,7 @@ public class Entry extends Widget {
if (event.status() == KeyStatus.down || event.status() == KeyStatus.move || event.status() == KeyStatus.up) {
keepFocus();
// updatethe cursor position :
- updateCursorPosition(event.pos());
+ updateCursorPosition(absolutePosition);
}
// Paste current selection only when up button
if (event.status() == KeyStatus.up) {
@@ -531,7 +533,7 @@ public class Entry extends Widget {
updateTextPosition();
Padding padding = this.shape.getPadding();
- Vector2f tmpSizeShaper = this.minSize;
+ Vector3f tmpSizeShaper = this.minSize;
if (this.propertyFill.x()) {
tmpSizeShaper = tmpSizeShaper.withX(this.size.x());
}
@@ -539,10 +541,10 @@ public class Entry extends Widget {
tmpSizeShaper = tmpSizeShaper.withY(this.size.y());
}
- Vector2f tmpOriginShaper = this.size.less(tmpSizeShaper).multiply(0.5f);
- Vector2f tmpSizeText = tmpSizeShaper.less(padding.x(), padding.y());
- //Vector2f tmpOriginText = this.size.less(tmpSizeText).multiply(0.5f);
- Vector2f tmpOriginText = new Vector2f(0, this.gc.getTextSize());
+ Vector3f tmpOriginShaper = this.size.less(tmpSizeShaper).multiply(0.5f);
+ Vector3f tmpSizeText = tmpSizeShaper.less(padding.x(), padding.y(), padding.z());
+ //Vector3f tmpOriginText = this.size.less(tmpSizeText).multiply(0.5f);
+ Vector3f tmpOriginText = new Vector3f(0, this.gc.getTextSize(), 0);
// sometimes, the user define an height bigger than the real size needed == > in this case we need to center the text in the shaper ...
/*
int minHeight = this.gc.getTextHeight();
@@ -551,10 +553,10 @@ public class Entry extends Widget {
}
*/
// fix all the position in the int class:
- tmpSizeShaper = Vector2f.clipInt(tmpSizeShaper);
- tmpOriginShaper = Vector2f.clipInt(tmpOriginShaper);
- tmpSizeText = Vector2f.clipInt(tmpSizeText);
- tmpOriginText = Vector2f.clipInt(tmpOriginText);
+ tmpSizeShaper = Vector3f.clipInt(tmpSizeShaper);
+ tmpOriginShaper = Vector3f.clipInt(tmpOriginShaper);
+ tmpSizeText = Vector3f.clipInt(tmpSizeText);
+ tmpOriginText = Vector3f.clipInt(tmpOriginText);
this.gc.clear();
this.gc.setSize((int) tmpSizeText.x(), (int) tmpSizeText.y());
@@ -568,7 +570,7 @@ public class Entry extends Widget {
this.gc.setColorFill(Color.RED);
this.gc.setColorStroke(Color.GREEN);
this.gc.setStrokeWidth(5);
- //this.gc.rectangleRounded(new Vector2f(20, 2), new Vector2f(55, 70), new Vector2f(15, 15));
+ //this.gc.rectangleRounded(new Vector3f(20, 2), new Vector3f(55, 70), new Vector3f(15, 15));
this.gc.line(new Vector2f(this.displayCursorPositionPixel, 2), new Vector2f(this.displayCursorPositionPixel, this.gc.getTextHeight() - 4));
this.gc.setColorFill(Color.BLACK);
@@ -579,10 +581,11 @@ public class Entry extends Widget {
Arrays.fill(valueToDisplay, '*');
}
+ Vector2f plop = new Vector2f(tmpOriginText.x() + this.displayStartPosition, tmpOriginText.y());
if (valueToDisplay.length != 0) {
- this.gc.text(tmpOriginText.add(this.displayStartPosition, 0), new String(valueToDisplay));
+ this.gc.text(plop, new String(valueToDisplay));
} else if (this.propertyTextWhenNothing != null) {
- this.gc.text(tmpOriginText.add(this.displayStartPosition, 0), this.propertyTextWhenNothing);
+ this.gc.text(plop, this.propertyTextWhenNothing);
}
this.overPositionStart = tmpOriginShaper;
this.overPositionStop = tmpOriginShaper.add(tmpSizeShaper);
@@ -724,14 +727,14 @@ public class Entry extends Widget {
* @param pos Absolute position of the event
* @note The display is automaticly requested when change apear.
*/
- protected void updateCursorPosition(final Vector2f pos) {
+ protected void updateCursorPosition(final Vector3f pos) {
updateCursorPosition(pos, false);
}
- protected void updateCursorPosition(final Vector2f pos, final boolean selection/*=false*/) {
+ protected void updateCursorPosition(final Vector3f pos, final boolean selection/*=false*/) {
Padding padding = this.shape.getPadding();
- Vector2f relPos = relativePosition(pos);
+ Vector3f relPos = relativePosition(pos);
relPos = relPos.withX(relPos.x() - this.displayStartPosition - padding.left());
// try to find the new cursor position :
if (this.displayStartPosition > this.propertyValue.length()) {
diff --git a/src/org/atriasoft/ewol/widget/ImageDisplay.java b/src/org/atriasoft/ewol/widget/ImageDisplay.java
index 90732d0..78e29ce 100644
--- a/src/org/atriasoft/ewol/widget/ImageDisplay.java
+++ b/src/org/atriasoft/ewol/widget/ImageDisplay.java
@@ -7,11 +7,11 @@ package org.atriasoft.ewol.widget;
import org.atriasoft.egami.ImageByteRGBA;
import org.atriasoft.esignal.SignalEmpty;
-import org.atriasoft.etk.Dimension;
+import org.atriasoft.etk.Dimension2f;
import org.atriasoft.etk.Uri;
import org.atriasoft.etk.math.Vector2f;
import org.atriasoft.etk.math.Vector2i;
-import org.atriasoft.ewol.Gravity;
+import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.annotation.EwolSignal;
import org.atriasoft.ewol.compositing.CompositingImage;
@@ -29,11 +29,11 @@ public class ImageDisplay extends Widget {
protected CompositingImage compositing = new CompositingImage(); //!< compositing element of the image.
protected Vector2f imageRenderSize = Vector2f.ZERO; //!< size of the image when we render it
- protected Dimension propertyBorder = Dimension.ZERO; //!< border to add at the image.
- protected Dimension propertyImageSize = Dimension.ZERO; //!< border to add at the image.
- protected boolean propertyKeepRatio = true; //!< keep the image ratio between width and hight
- protected Vector2f propertyPosStart = Vector2f.ZERO; //!< position in the image to start the sisplay (when we want not to display all the image)
- protected Vector2f propertyPosStop = Vector2f.ONE; //!< position in the image to start the sisplay (when we want not to display all the image)
+ protected Dimension2f propertyBorder = Dimension2f.ZERO; //!< border to add at the image.
+ protected Dimension2f propertyImageSize = Dimension2f.ZERO; //!< border to add at the image.
+ protected boolean propertyKeepRatio = true; //!< keep the image ratio between width and height
+ protected Vector2f propertyPosStart = Vector2f.ZERO; //!< position in the image to start the display (when we want not to display all the image)
+ protected Vector2f propertyPosStop = Vector2f.ONE; //!< position in the image to start the display (when we want not to display all the image)
protected boolean propertySmooth = true; //!< display is done in the pixel approximation if false
protected Uri propertySource = null; //!< file name of the image.
@@ -52,25 +52,26 @@ public class ImageDisplay extends Widget {
Log.debug("calculate min size: border=" + this.propertyBorder + " size=" + this.propertyImageSize + " min-size=" + this.propertyMinSize);
Vector2f imageBoder = this.propertyBorder.getPixel().multiply(2.0f);
Vector2f imageSize = this.propertyImageSize.getPixel();
- Vector2f size = this.propertyMinSize.getPixel();
+ Vector3f size = this.propertyMinSize.getPixel();
Log.debug(" ==> border=" + imageBoder + " size=" + imageSize + " min-size=" + size);
if (!imageSize.isZero()) {
- this.minSize = imageBoder.add(imageSize);
+ Vector2f tmp = imageBoder.add(imageSize);
+ this.minSize = new Vector3f(tmp.x(), tmp.y(), 0);
this.maxSize = this.minSize;
} else {
Vector2i imageSizeReal = this.getPropertyMinSize().getPixeli();//.compositing.getRealSize();
Log.verbose(" Real Size = " + imageSizeReal);
- Vector2f min1 = imageBoder.add(this.propertyMinSize.getPixel());
- this.minSize = imageBoder.add(imageSizeReal);
+ Vector3f min1 = this.propertyMinSize.getPixel().add(imageBoder.x(), imageBoder.y(), 0);
+ this.minSize = new Vector3f(imageBoder.x() + imageSizeReal.x(), imageBoder.y() + imageSizeReal.y(), 0);
Log.verbose(" set max : " + this.minSize + " min1=" + min1);
- this.minSize = Vector2f.max(this.minSize, min1);
+ this.minSize = Vector3f.max(this.minSize, min1);
Log.verbose(" result : " + this.minSize);
- this.maxSize = imageBoder.add(this.propertyMaxSize.getPixel());
- this.minSize = Vector2f.min(this.minSize, this.maxSize);
+ this.maxSize = this.propertyMaxSize.getPixel().add(imageBoder.x(), imageBoder.y(), 0);
+ this.minSize = Vector3f.min(this.minSize, this.maxSize);
}
- this.imageRenderSize = this.minSize;
- this.minSize = Vector2f.max(this.minSize, size);
- this.maxSize = Vector2f.max(this.maxSize, this.minSize);
+ this.imageRenderSize = new Vector2f(this.minSize.x(), this.minSize.y());
+ this.minSize = Vector3f.max(this.minSize, size);
+ this.maxSize = Vector3f.max(this.maxSize, this.minSize);
Log.debug("set widget min=" + this.minSize + " max=" + this.maxSize + " with real Image size=" + this.imageRenderSize + " img size=" + imageSize + " " + this.propertyImageSize);
markToRedraw();
}
@@ -79,7 +80,7 @@ public class ImageDisplay extends Widget {
@XmlAttribute
@XmlName(value = "border")
@EwolDescription(value = "Border of the image")
- public Dimension getPropertyBorder() {
+ public Dimension2f getPropertyBorder() {
return this.propertyBorder;
}
@@ -87,7 +88,7 @@ public class ImageDisplay extends Widget {
@XmlAttribute
@XmlName(value = "size")
@EwolDescription(value = "Basic display size of the image")
- public Dimension getPropertyImageSize() {
+ public Dimension2f getPropertyImageSize() {
return this.propertyImageSize;
}
@@ -168,15 +169,15 @@ public class ImageDisplay extends Widget {
}
// Calculate the new position and size:
Vector2f imageBoder = this.propertyBorder.getPixel();
- Vector2f origin = imageBoder;
+ Vector3f origin = new Vector3f(imageBoder.x(), imageBoder.y(), 0);
imageBoder = imageBoder.multiply(2.0f);
Vector2f imageRealSize = this.imageRenderSize.less(imageBoder);
- Vector2f imageRealSizeMax = this.size.less(imageBoder);
+ Vector3f imageRealSizeMax = this.size.less(imageBoder.x(), imageBoder.y(), 0);
Vector2f ratioSizeDisplayRequested = this.propertyPosStop.less(this.propertyPosStart);
//imageRealSizeMax *= ratioSizeDisplayRequested;
- Vector2f delta = Gravity.gravityGenerateDelta(this.propertyGravity, this.size.less(this.imageRenderSize));
+ Vector3f delta = this.propertyGravity.gravityGenerateDelta(this.size.less(this.imageRenderSize.x(), this.imageRenderSize.y(), 0));
if (this.propertyFill.x()) {
imageRealSize = imageRealSize.withX(imageRealSizeMax.x());
delta = delta.withX(0.0f);
@@ -198,11 +199,11 @@ public class ImageDisplay extends Widget {
} else if (ratio < ratioCurrent) {
float oldX = imageRealSize.x();
imageRealSize = imageRealSize.withX(imageRealSize.y() * ratio);
- origin = origin.add((oldX - imageRealSize.x()) * 0.5f, 0);
+ origin = origin.add((oldX - imageRealSize.x()) * 0.5f, 0, 0);
} else {
float oldY = imageRealSize.y();
imageRealSize = imageRealSize.withY(imageRealSize.x() / ratio);
- origin = origin.add(0, (oldY - imageRealSize.y()) * 0.5f);
+ origin = origin.add(0, (oldY - imageRealSize.y()) * 0.5f, 0);
}
}
@@ -210,7 +211,7 @@ public class ImageDisplay extends Widget {
if (this.propertySmooth) {
this.compositing.setPos(origin);
} else {
- this.compositing.setPos(Vector2f.clipInt(origin));
+ this.compositing.setPos(Vector3f.clipInt(origin));
}
this.compositing.printPart(imageRealSize, this.propertyPosStart, this.propertyPosStop);
Log.debug("Paint Image at : " + origin + " size=" + imageRealSize);
@@ -224,7 +225,7 @@ public class ImageDisplay extends Widget {
* @param uri URI of the new image
* @param border New border size to set
*/
- public void set(final Uri uri, final Dimension border) {
+ public void set(final Uri uri, final Dimension2f border) {
Log.verbose("Set Image : " + uri + " border=" + border);
setPropertyBorder(border);
setPropertySource(uri);
@@ -241,7 +242,7 @@ public class ImageDisplay extends Widget {
requestUpdateSize();
}
- public void setPropertyBorder(final Dimension propertyBorder) {
+ public void setPropertyBorder(final Dimension2f propertyBorder) {
if (this.propertyBorder.equals(propertyBorder)) {
return;
}
@@ -250,7 +251,7 @@ public class ImageDisplay extends Widget {
requestUpdateSize();
}
- public void setPropertyImageSize(final Dimension propertyImageSize) {
+ public void setPropertyImageSize(final Dimension2f propertyImageSize) {
if (this.propertyImageSize.equals(propertyImageSize)) {
return;
}
diff --git a/src/org/atriasoft/ewol/widget/Label.java b/src/org/atriasoft/ewol/widget/Label.java
index c70faa2..1d00e5d 100644
--- a/src/org/atriasoft/ewol/widget/Label.java
+++ b/src/org/atriasoft/ewol/widget/Label.java
@@ -8,7 +8,6 @@ package org.atriasoft.ewol.widget;
import org.atriasoft.esignal.SignalEmpty;
import org.atriasoft.etk.Uri;
import org.atriasoft.etk.math.FMath;
-import org.atriasoft.etk.math.Vector2f;
import org.atriasoft.etk.math.Vector2i;
import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.etranslate.ETranslate;
@@ -65,8 +64,8 @@ public class Label extends Widget {
@Override
public void calculateMinMaxSize() {
- Vector2f tmpMax = this.propertyMaxSize.getPixel();
- Vector2f tmpMin = this.propertyMinSize.getPixel();
+ Vector3f tmpMax = this.propertyMaxSize.getPixel();
+ Vector3f tmpMin = this.propertyMinSize.getPixel();
Log.debug("[" + getId() + "] {" + getClass().getCanonicalName() + "} tmpMax : " + tmpMax);
if (tmpMax.x() <= 999999) {
this.text.setTextAlignment(0, tmpMax.x() - 4, AlignMode.LEFT);
@@ -75,7 +74,7 @@ public class Label extends Widget {
Vector3f minSize = this.text.calculateSizeDecorated(this.value);
Log.debug("[" + getId() + "] {" + getClass().getCanonicalName() + "} minSize : " + minSize);
- this.minSize = new Vector2f(FMath.avg(tmpMin.x(), 4 + minSize.x(), tmpMax.x()), FMath.avg(tmpMin.y(), 4 + minSize.y(), tmpMax.y()));
+ this.minSize = new Vector3f(FMath.avg(tmpMin.x(), 4 + minSize.x(), tmpMax.x()), FMath.avg(tmpMin.y(), 4 + minSize.y(), tmpMax.y()), FMath.avg(tmpMin.z(), 4 + minSize.z(), tmpMax.z()));
Log.verbose("[" + getId() + "] {" + getClass().getCanonicalName() + "} Result min size : " + tmpMin + " < " + this.minSize + " < " + tmpMax);
}
@@ -117,7 +116,7 @@ public class Label extends Widget {
this.text.clear();
int paddingSize = 2;
- Vector2f tmpMax = this.propertyMaxSize.getPixel();
+ Vector3f tmpMax = this.propertyMaxSize.getPixel();
// to know the size of one line :
Vector3f minSize = this.text.calculateSize('A');
@@ -146,7 +145,7 @@ public class Label extends Widget {
tmpTextOrigin = tmpTextOrigin.withY(tmpTextOrigin.y() + (this.minSize.y() - 2 * paddingSize) - minSize.y());
- Vector2f textPos = new Vector2f(tmpTextOrigin.x(), tmpTextOrigin.y());
+ Vector3f textPos = new Vector3f(tmpTextOrigin.x(), tmpTextOrigin.y(), 0);
Vector3f drawClippingPos = new Vector3f(paddingSize, paddingSize, -0.5f);
Vector3f drawClippingSize = new Vector3f((this.size.x() - paddingSize), (this.size.y() - paddingSize), 1);
diff --git a/src/org/atriasoft/ewol/widget/ProgressBar.java b/src/org/atriasoft/ewol/widget/ProgressBar.java
index ed2c640..3c7cc5e 100644
--- a/src/org/atriasoft/ewol/widget/ProgressBar.java
+++ b/src/org/atriasoft/ewol/widget/ProgressBar.java
@@ -6,7 +6,6 @@
package org.atriasoft.ewol.widget;
import org.atriasoft.etk.Color;
-import org.atriasoft.etk.math.Vector2f;
import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.compositing.CompositingDrawing;
@@ -29,8 +28,8 @@ class ProgressBar extends Widget {
@Override
public void calculateMinMaxSize() {
- Vector2f tmpMin = this.propertyMinSize.getPixel();
- this.minSize = new Vector2f(Math.max(tmpMin.x(), 40.0f), Math.max(tmpMin.y(), ProgressBar.DOT_RADIUS * 2.0f));
+ Vector3f tmpMin = this.propertyMinSize.getPixel();
+ this.minSize = new Vector3f(Math.max(tmpMin.x(), 40.0f), Math.max(tmpMin.y(), ProgressBar.DOT_RADIUS * 2.0f), 10);
markToRedraw();
}
diff --git a/src/org/atriasoft/ewol/widget/Sizer.java b/src/org/atriasoft/ewol/widget/Sizer.java
index 3db7eec..d880b4a 100644
--- a/src/org/atriasoft/ewol/widget/Sizer.java
+++ b/src/org/atriasoft/ewol/widget/Sizer.java
@@ -5,13 +5,11 @@
*/
package org.atriasoft.ewol.widget;
-import org.atriasoft.etk.Dimension;
-import org.atriasoft.etk.Distance;
+import org.atriasoft.etk.Dimension3f;
import org.atriasoft.etk.math.FMath;
-import org.atriasoft.etk.math.Vector2b;
-import org.atriasoft.etk.math.Vector2f;
-import org.atriasoft.etk.math.Vector2i;
-import org.atriasoft.ewol.Gravity;
+import org.atriasoft.etk.math.Vector3b;
+import org.atriasoft.etk.math.Vector3f;
+import org.atriasoft.etk.math.Vector3i;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.annotation.EwolObjectProperty;
import org.atriasoft.ewol.internal.Log;
@@ -25,7 +23,7 @@ public class Sizer extends ContainerN {
modeVert; //!< Horizontal mode
}
- protected Dimension propertyBorderSize = new Dimension(Vector2f.ZERO, Distance.PIXEL); //!< Border size needed for all the display
+ protected Dimension3f propertyBorderSize = Dimension3f.ZERO; //!< Border size needed for all the display
protected DisplayMode propertyMode = DisplayMode.modeHori; //!< Methode to display the widget list (vert/hory ...)
@@ -47,9 +45,9 @@ public class Sizer extends ContainerN {
@Override
public void calculateMinMaxSize() {
Log.verbose("[" + getId() + "] update minimum size");
- this.subExpend = Vector2b.FALSE;
+ this.subExpend = Vector3b.FALSE;
this.minSize = this.propertyMinSize.getPixel();
- Vector2f tmpBorderSize = this.propertyBorderSize.getPixel();
+ Vector3f tmpBorderSize = this.propertyBorderSize.getPixel();
Log.verbose("[" + getId() + "] {" + getClass().getCanonicalName() + "} set min size : " + this.minSize);
for (Widget it : this.subWidget) {
if (it == null) {
@@ -62,7 +60,7 @@ public class Sizer extends ContainerN {
if (it.canExpand().y()) {
this.subExpend = this.subExpend.withY(true);
}
- Vector2f tmpSize = it.getCalculateMinSize();
+ Vector3f tmpSize = it.getCalculateMinSize();
Log.verbose("[" + getId() + "] NewMinSize=" + tmpSize);
Log.verbose("[" + getId() + "] {" + getClass().getCanonicalName() + "} Get minSize=" + tmpSize);
if (this.propertyMode == DisplayMode.modeVert) {
@@ -86,7 +84,7 @@ public class Sizer extends ContainerN {
@XmlName("border")
@EwolObjectProperty
@EwolDescription("The sizer border size")
- public Dimension getPropertyBorderSize() {
+ public Dimension3f getPropertyBorderSize() {
return this.propertyBorderSize;
}
@@ -102,28 +100,28 @@ public class Sizer extends ContainerN {
@Override
public void onChangeSize() {
super.onChangeSize();
- Vector2f tmpBorderSize = this.propertyBorderSize.getPixel();
+ Vector3f tmpBorderSize = this.propertyBorderSize.getPixel();
Log.verbose("[" + getId() + "] update size : " + this.size + " nbElement : " + this.subWidget.size() + " borderSize=" + tmpBorderSize + " from border=" + this.propertyBorderSize);
- Vector2f localWidgetSize = this.size.less(tmpBorderSize.multiply(2.0f));
+ Vector3f localWidgetSize = this.size.less(tmpBorderSize.multiply(2.0f));
// -1- calculate min-size and expand requested:
- Vector2f minSize = Vector2f.ZERO;
- Vector2i nbWidgetExpand = Vector2i.ZERO;
+ Vector3f minSize = Vector3f.ZERO;
+ Vector3i nbWidgetExpand = Vector3i.ZERO;
for (Widget it : this.subWidget) {
if (it == null) {
continue;
}
- Vector2f tmpSize = it.getCalculateMinSize();
+ Vector3f tmpSize = it.getCalculateMinSize();
if (this.propertyMode == DisplayMode.modeVert) {
- minSize = new Vector2f(Math.max(minSize.x(), tmpSize.x()), minSize.y() + tmpSize.y());
+ minSize = new Vector3f(Math.max(minSize.x(), tmpSize.x()), minSize.y() + tmpSize.y(), Math.max(minSize.z(), tmpSize.z()));
} else {
- minSize = new Vector2f(minSize.x() + tmpSize.x(), Math.max(minSize.y(), tmpSize.y()));
+ minSize = new Vector3f(minSize.x() + tmpSize.x(), Math.max(minSize.y(), tmpSize.y()), Math.max(minSize.z(), tmpSize.z()));
}
- Vector2b expand = it.canExpand();
- nbWidgetExpand = nbWidgetExpand.add(expand.x() ? 1 : 0, expand.y() ? 1 : 0);
+ Vector3b expand = it.canExpand();
+ nbWidgetExpand = nbWidgetExpand.add(expand.x() ? 1 : 0, expand.y() ? 1 : 0, 0);
}
// -2- Calculate the size to add at every elements...
float deltaExpandSize = 0.0f;
- if (!nbWidgetExpand.isEqual(Vector2i.ZERO)) {
+ if (!nbWidgetExpand.isEqual(Vector3i.ZERO)) {
if (this.propertyMode == DisplayMode.modeVert) {
deltaExpandSize = (localWidgetSize.y() - minSize.y()) / (nbWidgetExpand.y());
} else {
@@ -157,8 +155,8 @@ public class Sizer extends ContainerN {
if (it == null) {
continue;
}
- Vector2f tmpSizeMin = it.getSize();
- Vector2f tmpSizeMax = it.getCalculateMaxSize();
+ Vector3f tmpSizeMin = it.getSize();
+ Vector3f tmpSizeMax = it.getCalculateMaxSize();
// Now update his size his size in X and the current sizer size in Y:
if (this.propertyMode == DisplayMode.modeVert) {
if (it.canExpand().y() || (it == lastWidget && it.canExpandIfFree().y())) {
@@ -212,14 +210,14 @@ public class Sizer extends ContainerN {
if (!it.canExpand().x() && !it.canExpandIfFree().x()) {
continue;
}
- Vector2f tmpSizeMin = it.getSize();
+ Vector3f tmpSizeMin = it.getSize();
tmpSizeMin = tmpSizeMin.withX(FMath.avg(tmpSizeMin.x(), localWidgetSize.x(), it.getCalculateMaxSize().x()));
it.setSize(tmpSizeMin);
} else {
if (!it.canExpand().y() && !it.canExpandIfFree().y()) {
continue;
}
- Vector2f tmpSizeMin = it.getSize();
+ Vector3f tmpSizeMin = it.getSize();
tmpSizeMin = tmpSizeMin.withY(FMath.avg(tmpSizeMin.y(), localWidgetSize.y(), it.getCalculateMaxSize().y()));
it.setSize(tmpSizeMin);
}
@@ -229,36 +227,36 @@ public class Sizer extends ContainerN {
if (it == null) {
continue;
}
- it.setSize(Vector2f.clipInt(it.getSize()));
+ it.setSize(Vector3f.clipInt(it.getSize()));
}
// -7- get under Size
- Vector2f underSize = Vector2f.ZERO;
+ Vector3f underSize = Vector3f.ZERO;
for (Widget it : this.subWidget) {
if (it == null) {
continue;
}
- Vector2f size = it.getSize();
+ Vector3f size = it.getSize();
if (this.propertyMode == DisplayMode.modeVert) {
- underSize = new Vector2f(Math.max(underSize.x(), size.x()), underSize.y() + size.y());
+ underSize = new Vector3f(Math.max(underSize.x(), size.x()), underSize.y() + size.y(), Math.max(underSize.z(), size.z()));
} else {
- underSize = new Vector2f(underSize.x() + size.x(), Math.max(underSize.y(), size.y()));
+ underSize = new Vector3f(underSize.x() + size.x(), Math.max(underSize.y(), size.y()), Math.max(underSize.z(), size.z()));
}
}
- Vector2f deltas = localWidgetSize.less(underSize);
+ Vector3f deltas = localWidgetSize.less(underSize);
// -8- Calculate the local origin, depending of the gravity:
- Vector2f tmpOrigin = this.origin.add(tmpBorderSize).add(Gravity.gravityGenerateDelta(this.propertyGravity, deltas));
+ Vector3f tmpOrigin = this.origin.add(tmpBorderSize).add(this.propertyGravity.gravityGenerateDelta(deltas));
// -9- Set sub widget origin:
for (Widget it : this.subWidget) {
if (it == null) {
continue;
}
- Vector2f origin;
- Vector2f size = it.getSize();
+ Vector3f origin;
+ Vector3f size = it.getSize();
if (this.propertyMode == DisplayMode.modeVert) {
- origin = Vector2f.clipInt(tmpOrigin.add(this.offset).add(Gravity.gravityGenerateDelta(this.propertyGravity, new Vector2f(underSize.x() - size.x(), 0.0f))));
+ origin = Vector3f.clipInt(tmpOrigin.add(this.offset).add(this.propertyGravity.gravityGenerateDelta(new Vector3f(underSize.x() - size.x(), 0.0f, 0.0f))));
} else {
- origin = Vector2f.clipInt(tmpOrigin.add(this.offset).add(Gravity.gravityGenerateDelta(this.propertyGravity, new Vector2f(0.0f, underSize.y() - size.y()))));
+ origin = Vector3f.clipInt(tmpOrigin.add(this.offset).add(this.propertyGravity.gravityGenerateDelta(new Vector3f(0.0f, underSize.y() - size.y(), 0.0f))));
}
it.setOrigin(origin);
if (this.propertyMode == DisplayMode.modeVert) {
@@ -277,7 +275,7 @@ public class Sizer extends ContainerN {
markToRedraw();
}
- public void setPropertyBorderSize(final Dimension propertyBorderSize) {
+ public void setPropertyBorderSize(final Dimension3f propertyBorderSize) {
if (this.propertyBorderSize.equals(propertyBorderSize)) {
return;
}
diff --git a/src/org/atriasoft/ewol/widget/Spacer.java b/src/org/atriasoft/ewol/widget/Spacer.java
index f2af69c..1dce3d8 100644
--- a/src/org/atriasoft/ewol/widget/Spacer.java
+++ b/src/org/atriasoft/ewol/widget/Spacer.java
@@ -7,7 +7,6 @@ package org.atriasoft.ewol.widget;
*/
import org.atriasoft.etk.Color;
-import org.atriasoft.etk.math.Vector2f;
import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.compositing.CompositingDrawing;
@@ -35,7 +34,7 @@ public class Spacer extends Widget {
}
@Override
- public Widget getWidgetAtPos(final Vector2f pos) {
+ public Widget getWidgetAtPos(final Vector3f pos) {
return null;
}
diff --git a/src/org/atriasoft/ewol/widget/Widget.java b/src/org/atriasoft/ewol/widget/Widget.java
index 4adae2a..ed5d577 100644
--- a/src/org/atriasoft/ewol/widget/Widget.java
+++ b/src/org/atriasoft/ewol/widget/Widget.java
@@ -11,13 +11,12 @@ import java.util.List;
import org.atriasoft.esignal.Signal;
import org.atriasoft.etk.Color;
-import org.atriasoft.etk.Dimension;
+import org.atriasoft.etk.Dimension3f;
import org.atriasoft.etk.Distance;
import org.atriasoft.etk.math.FMath;
import org.atriasoft.etk.math.Matrix4f;
-import org.atriasoft.etk.math.Vector2b;
-import org.atriasoft.etk.math.Vector2f;
import org.atriasoft.etk.math.Vector2i;
+import org.atriasoft.etk.math.Vector3b;
import org.atriasoft.etk.math.Vector3f;
import org.atriasoft.ewol.DrawProperty;
import org.atriasoft.ewol.Gravity;
@@ -73,25 +72,25 @@ public class Widget extends EwolObject {
private final List localShortcut = new ArrayList<>(); //!< list of all shortcut in the widget
- protected Vector2f maxSize = new Vector2f(999999, 999999); //!< internal: maximum size of the widget
+ protected Vector3f maxSize = Vector3f.MAX_VALUE; //!< internal: maximum size of the widget
- protected Vector2f minSize = new Vector2f(0, 0); //!< internal: minimum size of the widget
+ protected Vector3f minSize = Vector3f.ZERO; //!< internal: minimum size of the widget
// ----------------------------------------------------------------------------------------------------------------
// -- drawing : All drawing must be done in 2 separate buffer 1 for the current display and 1 for the working...
// ----------------------------------------------------------------------------------------------------------------
protected boolean needRegenerateDisplay = true; //!< the display might be done the next regeneration
- protected Vector2f offset = new Vector2f(0, 0); //!< Offset of the display in the view-port
+ protected Vector3f offset = Vector3f.ZERO; //!< Offset of the display in the view-port
- protected Vector2f origin = new Vector2f(0, 0); //!< internal ... I do not really known how if can use it ...
+ protected Vector3f origin = Vector3f.ZERO; //!< internal ... I do not really known how if can use it ...
protected boolean propertyCanFocus = false; //!< the focus can be done on this widget
- protected Vector2b propertyExpand = new Vector2b(false, false); //!< the widget will expand if possible
- protected Vector2b propertyExpandIfFree = new Vector2b(false, false); //!< the widget will expand if possible
- protected Vector2b propertyFill = new Vector2b(true, true); //!< the widget will fill all the space provided by the parent.
- protected Gravity propertyGravity = Gravity.BUTTOM_LEFT; //!< Gravity of the widget
+ protected Vector3b propertyExpand = Vector3b.FALSE; //!< the widget will expand if possible
+ protected Vector3b propertyExpandIfFree = Vector3b.FALSE; //!< the widget will expand if possible
+ protected Vector3b propertyFill = Vector3b.TRUE; //!< the widget will fill all the space provided by the parent.
+ protected Gravity propertyGravity = Gravity.BOTTOM_LEFT; //!< Gravity of the widget
protected boolean propertyHide = false; //!< hide a widget on the display
- protected Dimension propertyMaxSize = new Dimension(new Vector2f(999999, 999999), Distance.PIXEL); //!< user define the maximum size of the widget
- protected Dimension propertyMinSize = new Dimension(new Vector2f(0, 0), Distance.PIXEL); //!< user define the minimum size of the widget
+ protected Dimension3f propertyMaxSize = new Dimension3f(Vector3f.MAX_VALUE, Distance.PIXEL); //!< user define the maximum size of the widget
+ protected Dimension3f propertyMinSize = new Dimension3f(Vector3f.ZERO, Distance.PIXEL); //!< user define the minimum size of the widget
// ----------------------------------------------------------------------------------------------------------------
// -- Shortcut : management of the shortcut
@@ -102,7 +101,7 @@ public class Widget extends EwolObject {
// ----------------------------------------------------------------------------------------------------------------
// -- Widget size:
// ----------------------------------------------------------------------------------------------------------------
- protected Vector2f size = new Vector2f(10, 10); //!< internal: current size of the widget
+ protected Vector3f size = Vector3f.VALUE_16; //!< internal: current size of the widget
// internal element calculated by the system
protected float zoom = 1.0f; //!< generic widget zoom
@@ -131,11 +130,11 @@ public class Widget extends EwolObject {
* @return 2D boolean represents the capacity to expend
* @note : INTERNAL EWOL SYSTEM
*/
- public Vector2b canExpand() {
+ public Vector3b canExpand() {
if (!this.propertyHide) {
return this.propertyExpand;
}
- return new Vector2b(false, false);
+ return Vector3b.FALSE;
}
/**
@@ -143,19 +142,19 @@ public class Widget extends EwolObject {
* @return 2D boolean represents the capacity to expend (if some free space is available)
* @note : INTERNAL EWOL SYSTEM
*/
- public Vector2b canExpandIfFree() {
+ public Vector3b canExpandIfFree() {
if (!this.propertyHide) {
return this.propertyExpandIfFree;
}
- return new Vector2b(false, false);
+ return Vector3b.FALSE;
}
/**
* get the filling capabilities xy
- * @return Vector2b repensent the capacity to xy filling
+ * @return Vector3b repensent the capacity to xy filling
* @note : INTERNAL EWOL SYSTEM
*/
- public Vector2b canFill() {
+ public Vector3b canFill() {
return this.propertyFill;
}
@@ -173,8 +172,8 @@ public class Widget extends EwolObject {
* @note : INTERNAL EWOL SYSTEM
*/
public void checkMaxSize() {
- final Vector2f pixelSize = this.propertyMaxSize.getPixel();
- this.maxSize = Vector2f.min(this.maxSize, pixelSize);
+ final Vector3f pixelSize = this.propertyMaxSize.getPixel();
+ this.maxSize = Vector3f.min(this.maxSize, pixelSize);
}
/**
@@ -183,8 +182,8 @@ public class Widget extends EwolObject {
* @note : INTERNAL EWOL SYSTEM
*/
public void checkMinSize() {
- final Vector2f pixelSize = this.propertyMinSize.getPixel();
- this.minSize = Vector2f.max(this.minSize, pixelSize);
+ final Vector3f pixelSize = this.propertyMinSize.getPixel();
+ this.minSize = Vector3f.max(this.minSize, pixelSize);
}
public void drawWidgetTree(final int level) {
@@ -201,11 +200,11 @@ public class Widget extends EwolObject {
* @return Requested size
* @note : INTERNAL EWOL SYSTEM
*/
- public Vector2f getCalculateMaxSize() {
+ public Vector3f getCalculateMaxSize() {
if (!this.propertyHide) {
return this.maxSize;
}
- return new Vector2f(999999, 999999);
+ return Vector3f.MAX_VALUE;
}
/**
@@ -213,11 +212,11 @@ public class Widget extends EwolObject {
* @return Requested size
* @note : INTERNAL EWOL SYSTEM
*/
- public Vector2f getCalculateMinSize() {
+ public Vector3f getCalculateMinSize() {
if (!this.propertyHide) {
return this.minSize;
}
- return new Vector2f(0, 0);
+ return Vector3f.ZERO;
}
/**
@@ -257,7 +256,7 @@ public class Widget extends EwolObject {
* get the offset property of the widget.
* @return The current offset value.
*/
- Vector2f getOffset() {
+ Vector3f getOffset() {
return this.offset;
}
@@ -265,7 +264,7 @@ public class Widget extends EwolObject {
* Get the origin (absolute position in the windows).
* @return Coordinate of the origin requested.
*/
- public Vector2f getOrigin() {
+ public Vector3f getOrigin() {
return this.origin;
}
@@ -281,7 +280,7 @@ public class Widget extends EwolObject {
@XmlAttribute
@XmlName(value = "expand")
@EwolDescription(value = "Request the widget Expand size while space is available")
- public Vector2b getPropertyExpand() {
+ public Vector3b getPropertyExpand() {
return this.propertyExpand;
}
@@ -289,7 +288,7 @@ public class Widget extends EwolObject {
@XmlAttribute
@XmlName(value = "expand-free")
@EwolDescription(value = "Request the widget Expand size while free space is detected (does not generate expand in upper wideget)")
- public Vector2b getPropertyExpandIfFree() {
+ public Vector3b getPropertyExpandIfFree() {
return this.propertyExpandIfFree;
}
@@ -297,7 +296,7 @@ public class Widget extends EwolObject {
@XmlAttribute
@XmlName(value = "fill")
@EwolDescription(value = "Fill the widget available size")
- public Vector2b getPropertyFill() {
+ public Vector3b getPropertyFill() {
return this.propertyFill;
}
@@ -321,7 +320,7 @@ public class Widget extends EwolObject {
@XmlAttribute
@XmlName(value = "max-size")
@EwolDescription(value = "User maximum size")
- public Dimension getPropertyMaxSize() {
+ public Dimension3f getPropertyMaxSize() {
return this.propertyMaxSize;
}
@@ -329,7 +328,7 @@ public class Widget extends EwolObject {
@XmlAttribute
@XmlName(value = "min-size")
@EwolDescription(value = "User minimum size")
- public Dimension getPropertyMinSize() {
+ public Dimension3f getPropertyMinSize() {
return this.propertyMinSize;
}
@@ -338,11 +337,11 @@ public class Widget extends EwolObject {
* @return Requested size
* @note : INTERNAL EWOL SYSTEM
*/
- public Vector2f getSize() {
+ public Vector3f getSize() {
if (!this.propertyHide) {
return this.size;
}
- return new Vector2f(0, 0);
+ return Vector3f.ZERO;
}
/**
@@ -352,7 +351,7 @@ public class Widget extends EwolObject {
* @return pointer on the widget found
* @note : INTERNAL EWOL SYSTEM
*/
- public Widget getWidgetAtPos(final Vector2f pos) {
+ public Widget getWidgetAtPos(final Vector3f pos) {
if (!this.propertyHide) {
return this;
}
@@ -539,12 +538,12 @@ public class Widget extends EwolObject {
protected void onRegenerateDisplay() {}
protected void onUpdateMinMaxSize() {
- final Vector2f pixelMin = this.propertyMinSize.getPixel();
- final Vector2f pixelMax = this.propertyMaxSize.getPixel();
+ final Vector3f pixelMin = this.propertyMinSize.getPixel();
+ final Vector3f pixelMax = this.propertyMaxSize.getPixel();
// check minimum maximum compatibility :
if (pixelMin.x() > pixelMax.x() || pixelMin.y() > pixelMax.y()) {
Log.error("Can not set a 'min size' > 'max size' reset to maximum ...");
- this.propertyMaxSize = new Dimension(new Vector2f(999999, 999999), Distance.PIXEL);
+ this.propertyMaxSize = new Dimension3f(Vector3f.MAX_VALUE, Distance.PIXEL);
}
requestUpdateSize();
}
@@ -554,7 +553,7 @@ public class Widget extends EwolObject {
* @param pos Absolute position that you request conversion.
* @return The relative position.
*/
- public Vector2f relativePosition(final Vector2f pos) {
+ public Vector3f relativePosition(final Vector3f pos) {
return pos.less(this.origin);
}
@@ -628,21 +627,21 @@ public class Widget extends EwolObject {
* User set No maximum size.
*/
public void setNoMaxSize() {
- setPropertyMaxSize(new Dimension(new Vector2f(999999, 999999), Distance.PIXEL));
+ setPropertyMaxSize(new Dimension3f(Vector3f.MAX_VALUE, Distance.PIXEL));
}
/**
* User set No minimum size.
*/
public void setNoMinSize() {
- setPropertyMinSize(new Dimension(new Vector2f(0, 0), Distance.PIXEL));
+ setPropertyMinSize(new Dimension3f(Vector3f.ZERO, Distance.PIXEL));
}
/**
* set the zoom property of the widget.
* @param newVal offset value.
*/
- public void setOffset(final Vector2f newVal) {
+ public void setOffset(final Vector3f newVal) {
Log.info("Set offset: " + newVal);
if (this.offset != newVal) {
this.offset = newVal;
@@ -656,7 +655,7 @@ public class Widget extends EwolObject {
* @param pos Position of the origin.
* @note : INTERNAL EWOL SYSTEM
*/
- public void setOrigin(final Vector2f pos) {
+ public void setOrigin(final Vector3f pos) {
this.origin = pos;
}
@@ -673,7 +672,7 @@ public class Widget extends EwolObject {
}
}
- public void setPropertyExpand(final Vector2b value) {
+ public void setPropertyExpand(final Vector3b value) {
if (this.propertyExpand.equals(value)) {
return;
}
@@ -682,7 +681,7 @@ public class Widget extends EwolObject {
requestUpdateSize();
}
- public void setPropertyExpandIfFree(final Vector2b value) {
+ public void setPropertyExpandIfFree(final Vector3b value) {
if (this.propertyExpandIfFree.equals(value)) {
return;
}
@@ -691,7 +690,7 @@ public class Widget extends EwolObject {
requestUpdateSize();
}
- public void setPropertyFill(final Vector2b value) {
+ public void setPropertyFill(final Vector3b value) {
if (this.propertyFill.equals(value)) {
return;
}
@@ -718,7 +717,7 @@ public class Widget extends EwolObject {
requestUpdateSize();
}
- public void setPropertyMaxSize(final Dimension value) {
+ public void setPropertyMaxSize(final Dimension3f value) {
if (this.propertyMaxSize.equals(value)) {
return;
}
@@ -726,7 +725,7 @@ public class Widget extends EwolObject {
onUpdateMinMaxSize();
}
- public void setPropertyMinSize(final Dimension value) {
+ public void setPropertyMinSize(final Dimension3f value) {
if (this.propertyMinSize.equals(value)) {
return;
}
@@ -739,7 +738,7 @@ public class Widget extends EwolObject {
* @return Requested size
* @note : INTERNAL EWOL SYSTEM Do not modify the size yourself: calculation is complex and need knowledge of around widget
*/
- public void setSize(final Vector2f value) {
+ public void setSize(final Vector3f value) {
this.size = value;
}
@@ -917,7 +916,7 @@ public class Widget extends EwolObject {
// widget is hidden ...
return;
}
- final Vector2f displayOrigin = this.origin.add(this.offset);
+ final Vector3f displayOrigin = this.origin.add(this.offset);
// check if the element is displayable in the windows :
if (displayProp.windowsSize().x() < this.origin.x() || displayProp.windowsSize().y() < this.origin.y()) {
diff --git a/src/org/atriasoft/ewol/widget/Windows.java b/src/org/atriasoft/ewol/widget/Windows.java
index 6e44b21..d25526c 100644
--- a/src/org/atriasoft/ewol/widget/Windows.java
+++ b/src/org/atriasoft/ewol/widget/Windows.java
@@ -12,8 +12,8 @@ import java.util.ListIterator;
import org.atriasoft.etk.Color;
import org.atriasoft.etk.Uri;
import org.atriasoft.etk.math.Matrix4f;
-import org.atriasoft.etk.math.Vector2f;
-import org.atriasoft.etk.math.Vector2i;
+import org.atriasoft.etk.math.Vector3f;
+import org.atriasoft.etk.math.Vector3i;
import org.atriasoft.ewol.DrawProperty;
import org.atriasoft.ewol.annotation.EwolDescription;
import org.atriasoft.ewol.compositing.CompositingDrawing;
@@ -33,7 +33,7 @@ public class Windows extends Widget {
protected int colorBg = -1; //!< Default background color of the windows
- protected List popUpWidgetList = new ArrayList();
+ protected List popUpWidgetList = new ArrayList<>();
@XmlManaged
@XmlAttribute
@@ -109,10 +109,10 @@ public class Windows extends Widget {
}
@Override
- public Widget getWidgetAtPos(final Vector2f pos) {
+ public Widget getWidgetAtPos(final Vector3f pos) {
Log.verbose("Get widget at pos : " + pos);
// calculate relative position
- Vector2f relativePos = relativePosition(pos);
+ Vector3f relativePos = relativePosition(pos);
// event go directly on the pop-up
if (this.popUpWidgetList.size() != 0) {
return this.popUpWidgetList.get(this.popUpWidgetList.size() - 1).getWidgetAtPos(pos);
@@ -141,14 +141,14 @@ public class Windows extends Widget {
this.subWidget.calculateMinMaxSize();
// TODO : do it better ... and manage gravity ...
this.subWidget.setSize(this.size);
- this.subWidget.setOrigin(Vector2f.ZERO);
+ this.subWidget.setOrigin(Vector3f.ZERO);
this.subWidget.onChangeSize();
}
for (Widget it : this.popUpWidgetList) {
if (it != null) {
it.calculateMinMaxSize();
it.setSize(this.size);
- it.setOrigin(Vector2f.ZERO);
+ it.setOrigin(Vector3f.ZERO);
it.onChangeSize();
}
}
@@ -274,7 +274,7 @@ public class Windows extends Widget {
public void sysDraw() {
//Log.verbose("Draw on " + this.size);
// set the size of the open GL system
- OpenGL.setViewPort(Vector2f.ZERO, this.size);
+ OpenGL.setViewPort(Vector3f.ZERO, this.size);
OpenGL.disable(OpenGL.Flag.flag_dither);
//OpenGL.disable(OpenGL.Flag.flagblend);
OpenGL.disable(OpenGL.Flag.flag_stencilTest);
@@ -290,8 +290,8 @@ public class Windows extends Widget {
// clear the matrix system :
OpenGL.setBasicMatrix(Matrix4f.IDENTITY);
- Vector2i tmpSize = new Vector2i((int) this.size.x(), (int) this.size.y());
- DrawProperty displayProp = new DrawProperty(tmpSize, Vector2i.ZERO, tmpSize);
+ Vector3i tmpSize = new Vector3i((int) this.size.x(), (int) this.size.y(), (int) this.size.z());
+ DrawProperty displayProp = new DrawProperty(tmpSize, Vector3i.ZERO, tmpSize);
systemDraw(displayProp);
OpenGL.disable(OpenGL.Flag.flag_blend);
}