// Path: src/main/java/org/klomp/cassowary/ClPoint.java
// public class ClPoint {
// 
//     private ClVariable x;
// 
//     private ClVariable y;
// 
//     public ClPoint(double x, double y) {
//         this.x = new ClVariable(x);
//         this.y = new ClVariable(y);
//     }
// 
//     public ClPoint(double x, double y, int a) {
//         this.x = new ClVariable("x" + a, x);
//         this.y = new ClVariable("y" + a, y);
//     }
// 
//     public ClPoint(ClVariable clv_x, ClVariable clv_y) {
//         this.x = clv_x;
//         this.y = clv_y;
//     }
// 
//     public ClVariable getX() {
//         return x;
//     }
// 
//     public ClVariable getY() {
//         return y;
//     }
// 
//     // use only before adding into the solver
//     public void setXY(double x, double y) {
//         this.x.setValue(x);
//         this.y.setValue(y);
//     }
// 
//     public void setXY(ClVariable clv_x, ClVariable clv_y) {
//         this.x = clv_x;
//         this.y = clv_y;
//     }
// 
//     public double getXValue() {
//         return getX().getValue();
//     }
// 
//     public double getYValue() {
//         return getY().getValue();
//     }
// 
//     @Override
//     public String toString() {
//         return "(" + x.toString() + ", " + y.toString() + ")";
//     }
// 
// }
// 
// Path: src/main/java/org/klomp/cassowary/ClVariable.java
// public class ClVariable extends ClAbstractVariable {
// 
//     private double _value;
// 
//     private Object _attachedObject;
// 
//     public ClVariable(String name, double value) {
//         super(name);
//         _value = value;
//     }
// 
//     public ClVariable(String name) {
//         super(name);
//         _value = 0.0;
//     }
// 
//     public ClVariable(double value) {
//         _value = value;
//     }
// 
//     public ClVariable() {
//         _value = 0.0;
//     }
// 
//     public ClVariable(long number, String prefix, double value) {
//         super(number, prefix);
//         _value = value;
//     }
// 
//     public ClVariable(long number, String prefix) {
//         super(number, prefix);
//         _value = 0.0;
//     }
// 
//     @Override
//     public boolean isDummy() {
//         return false;
//     }
// 
//     @Override
//     public boolean isExternal() {
//         return true;
//     }
// 
//     @Override
//     public boolean isPivotable() {
//         return false;
//     }
// 
//     @Override
//     public boolean isRestricted() {
//         return false;
//     }
// 
//     @Override
//     public String toString() {
//         return "[" + name() + ":" + _value + "]";
//     }
// 
//     public final double getValue() {
//         return _value;
//     }
// 
//     // change the value held -- should *not* use this if the variable is
//     // in a solver -- instead use addEditVar() and suggestValue() interface
//     public final void setValue(double value) {
//         _value = value;
//     }
// 
//     // permit overriding in subclasses in case something needs to be
//     // done when the value is changed by the solver
//     // may be called when the value hasn't actually changed -- just
//     // means the solver is setting the external variable
//     public void change_value(double value) {
//         _value = value;
//     }
// 
//     public void setAttachedObject(Object o) {
//         _attachedObject = o;
//     }
// 
//     public Object getAttachedObject() {
//         return _attachedObject;
//     }
// 
// }


import java.awt.Graphics;
import org.klomp.cassowary.ClPoint;
import org.klomp.cassowary.ClVariable;
    // Helper function to convert center to screen coords
    void cvt() {
        sx = (int) center.getX().getValue();
        sy = (int) center.getY().getValue();
    }

    // Draw the box
    public void draw(Graphics g) {
        cvt();
        g.drawRect(sx - (width / 2), sy - (height / 2), width, height);
    }

    public void SetCenter(double x, double y) {
        center.setXY(x, y);
        cvt();
    }

    public void SetSize(int width, int height) {
        this.width = width;
        this.height = height;
    }

    public double CenterX() {
        return center.getXValue();
    }

    public double CenterY() {
        return center.getYValue();
    }

// Path: src/main/java/org/klomp/cassowary/ClPoint.java
// public class ClPoint {
// 
//     private ClVariable x;
// 
//     private ClVariable y;
// 
//     public ClPoint(double x, double y) {
//         this.x = new ClVariable(x);
//         this.y = new ClVariable(y);
//     }
// 
//     public ClPoint(double x, double y, int a) {
//         this.x = new ClVariable("x" + a, x);
//         this.y = new ClVariable("y" + a, y);
//     }
// 
//     public ClPoint(ClVariable clv_x, ClVariable clv_y) {
//         this.x = clv_x;
//         this.y = clv_y;
//     }
// 
//     public ClVariable getX() {
//         return x;
//     }
// 
//     public ClVariable getY() {
//         return y;
//     }
// 
//     // use only before adding into the solver
//     public void setXY(double x, double y) {
//         this.x.setValue(x);
//         this.y.setValue(y);
//     }
// 
//     public void setXY(ClVariable clv_x, ClVariable clv_y) {
//         this.x = clv_x;
//         this.y = clv_y;
//     }
// 
//     public double getXValue() {
//         return getX().getValue();
//     }
// 
//     public double getYValue() {
//         return getY().getValue();
//     }
// 
//     @Override
//     public String toString() {
//         return "(" + x.toString() + ", " + y.toString() + ")";
//     }
// 
// }
// 
// Path: src/main/java/org/klomp/cassowary/ClVariable.java
// public class ClVariable extends ClAbstractVariable {
// 
//     private double _value;
// 
//     private Object _attachedObject;
// 
//     public ClVariable(String name, double value) {
//         super(name);
//         _value = value;
//     }
// 
//     public ClVariable(String name) {
//         super(name);
//         _value = 0.0;
//     }
// 
//     public ClVariable(double value) {
//         _value = value;
//     }
// 
//     public ClVariable() {
//         _value = 0.0;
//     }
// 
//     public ClVariable(long number, String prefix, double value) {
//         super(number, prefix);
//         _value = value;
//     }
// 
//     public ClVariable(long number, String prefix) {
//         super(number, prefix);
//         _value = 0.0;
//     }
// 
//     @Override
//     public boolean isDummy() {
//         return false;
//     }
// 
//     @Override
//     public boolean isExternal() {
//         return true;
//     }
// 
//     @Override
//     public boolean isPivotable() {
//         return false;
//     }
// 
//     @Override
//     public boolean isRestricted() {
//         return false;
//     }
// 
//     @Override
//     public String toString() {
//         return "[" + name() + ":" + _value + "]";
//     }
// 
//     public final double getValue() {
//         return _value;
//     }
// 
//     // change the value held -- should *not* use this if the variable is
//     // in a solver -- instead use addEditVar() and suggestValue() interface
//     public final void setValue(double value) {
//         _value = value;
//     }
// 
//     // permit overriding in subclasses in case something needs to be
//     // done when the value is changed by the solver
//     // may be called when the value hasn't actually changed -- just
//     // means the solver is setting the external variable
//     public void change_value(double value) {
//         _value = value;
//     }
// 
//     public void setAttachedObject(Object o) {
//         _attachedObject = o;
//     }
// 
//     public Object getAttachedObject() {
//         return _attachedObject;
//     }
// 
// }


// Path: src/test/java/org/klomp/cassowary/demo/DraggableBox.java
import java.awt.Graphics;
import org.klomp.cassowary.ClPoint;
import org.klomp.cassowary.ClVariable;

    // Helper function to convert center to screen coords
    void cvt() {
        sx = (int) center.getX().getValue();
        sy = (int) center.getY().getValue();
    }

    // Draw the box
    public void draw(Graphics g) {
        cvt();
        g.drawRect(sx - (width / 2), sy - (height / 2), width, height);
    }

    public void SetCenter(double x, double y) {
        center.setXY(x, y);
        cvt();
    }

    public void SetSize(int width, int height) {
        this.width = width;
        this.height = height;
    }

    public double CenterX() {
        return center.getXValue();
    }

    public double CenterY() {
        return center.getYValue();
    }

    public ClVariable X() {