| .. | .. | 
|---|
| 139 | 139 |              Point prev = new Point(0, 0); | 
|---|
| 140 | 140 |              Point curr = new Point(0, 0); | 
|---|
| 141 | 141 |              Rectangle dummy = new Rectangle(); | 
|---|
| 142 |  | -            calcHotSpot(sample, info, prev, dummy);  | 
|---|
 | 142 | +            calcHotSpot(sample, //info,  | 
|---|
 | 143 | +                    prev, dummy);  | 
|---|
| 143 | 144 |  			sample = ((Sphere)ctrlPnts.get(i)).getCenter(); | 
|---|
| 144 |  | -            calcHotSpot(sample, info, curr, dummy);  | 
|---|
 | 145 | +            calcHotSpot(sample, //info,  | 
|---|
 | 146 | +                    curr, dummy);  | 
|---|
| 145 | 147 |              info.g.drawLine(prev.x, prev.y, curr.x, curr.y); | 
|---|
| 146 | 148 |              prev.x = curr.x; | 
|---|
| 147 | 149 |              prev.y = curr.y; | 
|---|
| 148 | 150 |          } | 
|---|
| 149 | 151 |      } | 
|---|
| 150 | 152 |   | 
|---|
| 151 |  | -    void drawEditHandles(ClickInfo info, int level)  | 
|---|
 | 153 | +    void drawEditHandles(//ClickInfo info,  | 
|---|
 | 154 | +            int level)  | 
|---|
| 152 | 155 |      { | 
|---|
| 153 |  | -        info.g.setColor(Color.red);  | 
|---|
 | 156 | +        clickInfo.g.setColor(Color.red);  | 
|---|
| 154 | 157 |          int count = ctrlPnts.size(); | 
|---|
| 155 | 158 |          for (int i=0; i < count; i++) | 
|---|
| 156 | 159 |          { | 
|---|
| 157 | 160 |              cVector p = ((Sphere)ctrlPnts.elementAt(i)).getCenter(); | 
|---|
| 158 |  | -            Rectangle spot = calcHotSpot(p, info);  | 
|---|
| 159 |  | -            info.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
 | 161 | +            Rectangle spot = calcHotSpot(p); //, info);  | 
|---|
 | 162 | +            clickInfo.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
| 160 | 163 |          } | 
|---|
| 161 | 164 |   | 
|---|
| 162 | 165 |      } | 
|---|
| 163 | 166 |   | 
|---|
| 164 |  | -    boolean doEditClick(ClickInfo info, int level)  | 
|---|
 | 167 | +    boolean doEditClick(//ClickInfo info,  | 
|---|
 | 168 | +            int level)  | 
|---|
| 165 | 169 |      { | 
|---|
| 166 |  | -        startX = info.x;  | 
|---|
| 167 |  | -        startY = info.y;  | 
|---|
 | 170 | +        startX = clickInfo.x;  | 
|---|
 | 171 | +        startY = clickInfo.y;  | 
|---|
| 168 | 172 |          int nPoints = ctrlPnts.size(); | 
|---|
| 169 | 173 |          hitSomething = false; | 
|---|
| 170 | 174 |          for (int i=0; i < nPoints; i++) | 
|---|
| 171 | 175 |          { | 
|---|
| 172 | 176 |              cVector p = ((Sphere)ctrlPnts.elementAt(i)).getCenter(); | 
|---|
| 173 |  | -            Rectangle r = calcHotSpot(p, info);  | 
|---|
| 174 |  | -            if (r.contains(info.x, info.y))  | 
|---|
 | 177 | +            Rectangle r = calcHotSpot(p); //, clickInfo);  | 
|---|
 | 178 | +            if (r.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 175 | 179 |              { | 
|---|
| 176 | 180 |                  hitSomething = true; | 
|---|
| 177 | 181 |                  hitIndex = i; | 
|---|
 
| .. | .. | 
|---|
| 117 | 117 |              Point prev = new Point(0, 0); | 
|---|
| 118 | 118 |              Point curr = new Point(0, 0); | 
|---|
| 119 | 119 |              Rectangle dummy = new Rectangle(); | 
|---|
| 120 |  | -            calcHotSpot(sample, info, prev, dummy);  | 
|---|
 | 120 | +            calcHotSpot(sample, //info,  | 
|---|
 | 121 | +                    prev, dummy);  | 
|---|
| 121 | 122 |  			sample = ((Sphere)ctrlPnts.get(i)).getCenter(); | 
|---|
| 122 |  | -            calcHotSpot(sample, info, curr, dummy);  | 
|---|
 | 123 | +            calcHotSpot(sample, //info,  | 
|---|
 | 124 | +                    curr, dummy);  | 
|---|
| 123 | 125 |              info.g.drawLine(prev.x, prev.y, curr.x, curr.y); | 
|---|
| 124 | 126 |              prev.x = curr.x; | 
|---|
| 125 | 127 |              prev.y = curr.y; | 
|---|
| 126 | 128 |          } | 
|---|
| 127 | 129 |      } | 
|---|
| 128 | 130 |   | 
|---|
| 129 |  | -    void drawEditHandles(ClickInfo info, int level)  | 
|---|
 | 131 | +    void drawEditHandles(//ClickInfo info,  | 
|---|
 | 132 | +            int level)  | 
|---|
| 130 | 133 |      { | 
|---|
| 131 |  | -        info.g.setColor(Color.red);  | 
|---|
 | 134 | +        clickInfo.g.setColor(Color.red);  | 
|---|
| 132 | 135 |          int count = ctrlPnts.size(); | 
|---|
| 133 | 136 |          for (int i=0; i < count; i++) | 
|---|
| 134 | 137 |          { | 
|---|
| 135 | 138 |              cVector p = ((Sphere)ctrlPnts.elementAt(i)).getCenter(); | 
|---|
| 136 |  | -            Rectangle spot = calcHotSpot(p, info);  | 
|---|
| 137 |  | -            info.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
 | 139 | +            Rectangle spot = calcHotSpot(p); //, info);  | 
|---|
 | 140 | +            clickInfo.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
| 138 | 141 |          } | 
|---|
| 139 | 142 |   | 
|---|
| 140 | 143 |      } | 
|---|
| 141 | 144 |   | 
|---|
| 142 |  | -    boolean doEditClick(ClickInfo info, int level)  | 
|---|
 | 145 | +    boolean doEditClick(//ClickInfo info,  | 
|---|
 | 146 | +            int level)  | 
|---|
| 143 | 147 |      { | 
|---|
| 144 |  | -        startX = info.x;  | 
|---|
| 145 |  | -        startY = info.y;  | 
|---|
 | 148 | +        startX = clickInfo.x;  | 
|---|
 | 149 | +        startY = clickInfo.y;  | 
|---|
| 146 | 150 |          int nPoints = ctrlPnts.size(); | 
|---|
| 147 | 151 |          hitSomething = false; | 
|---|
| 148 | 152 |          for (int i=0; i < nPoints; i++) | 
|---|
| 149 | 153 |          { | 
|---|
| 150 | 154 |              cVector p = ((Sphere)ctrlPnts.elementAt(i)).getCenter(); | 
|---|
| 151 |  | -            Rectangle r = calcHotSpot(p, info);  | 
|---|
| 152 |  | -            if (r.contains(info.x, info.y))  | 
|---|
 | 155 | +            Rectangle r = calcHotSpot(p); //, info);  | 
|---|
 | 156 | +            if (r.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 153 | 157 |              { | 
|---|
| 154 | 158 |                  hitSomething = true; | 
|---|
| 155 | 159 |                  hitIndex = i; | 
|---|
 
| .. | .. | 
|---|
| 14255 | 14255 |              drag = false; | 
|---|
| 14256 | 14256 |              //System.out.println("Mouse DOWN"); | 
|---|
| 14257 | 14257 |              editObj = false; | 
|---|
| 14258 |  | -            ClickInfo info = new ClickInfo();  | 
|---|
| 14259 |  | -            info.bounds.setBounds(0, 0, (int) (getBounds().width * zoom), (int) (getBounds().height * zoom));  | 
|---|
| 14260 |  | -            info.pane = this;  | 
|---|
| 14261 |  | -            info.camera = renderCamera;  | 
|---|
| 14262 |  | -            info.x = x;  | 
|---|
| 14263 |  | -            info.y = y;  | 
|---|
| 14264 |  | -            info.modifiers = modifiersex;  | 
|---|
| 14265 |  | -            editObj = object.doEditClick(info, 0);  | 
|---|
 | 14258 | +            //ClickInfo info = new ClickInfo();  | 
|---|
 | 14259 | +            object.clickInfo.bounds.setBounds(0, 0, (int) (getBounds().width * zoom), (int) (getBounds().height * zoom));  | 
|---|
 | 14260 | +            object.clickInfo.pane = this;  | 
|---|
 | 14261 | +            object.clickInfo.camera = renderCamera;  | 
|---|
 | 14262 | +            object.clickInfo.x = x;  | 
|---|
 | 14263 | +            object.clickInfo.y = y;  | 
|---|
 | 14264 | +            object.clickInfo.modifiers = modifiersex;  | 
|---|
 | 14265 | +            editObj = object.doEditClick(//info,  | 
|---|
 | 14266 | +                    0);  | 
|---|
| 14266 | 14267 |              if (!editObj) | 
|---|
| 14267 | 14268 |              { | 
|---|
| 14268 | 14269 |                  hasMarquee = true; | 
|---|
| .. | .. | 
|---|
| 14662 | 14663 |              if (editObj) | 
|---|
| 14663 | 14664 |              { | 
|---|
| 14664 | 14665 |                  drag = true; | 
|---|
| 14665 |  | -                ClickInfo info = new ClickInfo();  | 
|---|
| 14666 |  | -                info.bounds.setBounds(0, 0,  | 
|---|
 | 14666 | +                //ClickInfo info = new ClickInfo();  | 
|---|
 | 14667 | +                object.clickInfo.bounds.setBounds(0, 0,  | 
|---|
| 14667 | 14668 |                          (int) (getBounds().width * zoom), (int) (getBounds().height * zoom)); | 
|---|
| 14668 |  | -                info.pane = this;  | 
|---|
| 14669 |  | -                info.camera = renderCamera;  | 
|---|
| 14670 |  | -                info.x = x;  | 
|---|
| 14671 |  | -                info.y = y;  | 
|---|
| 14672 |  | -                object.GetWindow().copy  | 
|---|
| 14673 |  | -                        .doEditDrag(info, (modifiers & MouseEvent.BUTTON3_MASK) != 0);  | 
|---|
 | 14669 | +                object.clickInfo.pane = this;  | 
|---|
 | 14670 | +                object.clickInfo.camera = renderCamera;  | 
|---|
 | 14671 | +                object.clickInfo.x = x;  | 
|---|
 | 14672 | +                object.clickInfo.y = y;  | 
|---|
 | 14673 | +                object //.GetWindow().copy  | 
|---|
 | 14674 | +                        .doEditDrag(//info,  | 
|---|
 | 14675 | +                                (modifiers & MouseEvent.BUTTON3_MASK) != 0);  | 
|---|
| 14674 | 14676 |              } else | 
|---|
| 14675 | 14677 |              { | 
|---|
| 14676 | 14678 |                  if (x < startX) | 
|---|
| .. | .. | 
|---|
| 14819 | 14821 |          } | 
|---|
| 14820 | 14822 |      } | 
|---|
| 14821 | 14823 |   | 
|---|
 | 14824 | +//        ClickInfo clickInfo = new ClickInfo();  | 
|---|
 | 14825 | +          | 
|---|
| 14822 | 14826 |      public void mouseMoved(MouseEvent e) | 
|---|
| 14823 | 14827 |      { | 
|---|
| 14824 | 14828 |          //System.out.println("mouseMoved: " + e); | 
|---|
| 14825 | 14829 |          if (isRenderer) | 
|---|
| 14826 | 14830 |              return; | 
|---|
| 14827 | 14831 |           | 
|---|
| 14828 |  | -        ClickInfo ci = new ClickInfo();  | 
|---|
| 14829 |  | -        ci.x = e.getX();  | 
|---|
| 14830 |  | -        ci.y = e.getY();  | 
|---|
| 14831 |  | -        ci.modifiers = e.getModifiersEx();  | 
|---|
| 14832 |  | -        ci.bounds.setBounds(0, 0, (int) (getBounds().width * zoom), (int) (getBounds().height * zoom));  | 
|---|
| 14833 |  | -        ci.pane = this;  | 
|---|
| 14834 |  | -        ci.camera = renderCamera;  | 
|---|
 | 14832 | +        // Mouse cursor feedback  | 
|---|
 | 14833 | +        object.clickInfo.x = e.getX();  | 
|---|
 | 14834 | +        object.clickInfo.y = e.getY();  | 
|---|
 | 14835 | +        object.clickInfo.modifiers = e.getModifiersEx();  | 
|---|
 | 14836 | +        object.clickInfo.bounds.setBounds(0, 0, (int) (getBounds().width * zoom), (int) (getBounds().height * zoom));  | 
|---|
 | 14837 | +        object.clickInfo.pane = this;  | 
|---|
 | 14838 | +        object.clickInfo.camera = renderCamera;  | 
|---|
| 14835 | 14839 |          if (!isRenderer) | 
|---|
| 14836 | 14840 |          { | 
|---|
| 14837 | 14841 |              //ObjEditor editWindow = object.editWindow; | 
|---|
| 14838 | 14842 |              //Object3D copy = editWindow.copy; | 
|---|
| 14839 |  | -            if (object.doEditClick(ci, 0))  | 
|---|
 | 14843 | +            if (object.doEditClick(//clickInfo,  | 
|---|
 | 14844 | +                                0))  | 
|---|
| 14840 | 14845 |              { | 
|---|
| 14841 | 14846 |                  setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); | 
|---|
| 14842 | 14847 |              } else | 
|---|
| .. | .. | 
|---|
| 15862 | 15867 |   | 
|---|
| 15863 | 15868 |          int width = getBounds().width; | 
|---|
| 15864 | 15869 |          int height = getBounds().height; | 
|---|
| 15865 |  | -        ClickInfo info = new ClickInfo();  | 
|---|
| 15866 |  | -        info.bounds.setBounds(0, 0, (int) (width * zoom), (int) (height * zoom));  | 
|---|
| 15867 | 15870 |          //Image img = CreateImage(width, height); | 
|---|
| 15868 | 15871 |          //System.out.println("width = " + width + "; height = " + height + "\n"); | 
|---|
| 15869 | 15872 |           | 
|---|
| .. | .. | 
|---|
| 15940 | 15943 |          } | 
|---|
| 15941 | 15944 |          if (object != null && !hasMarquee) | 
|---|
| 15942 | 15945 |          { | 
|---|
 | 15946 | +            if (object.clickInfo == null)  | 
|---|
 | 15947 | +                object.clickInfo = new ClickInfo();  | 
|---|
 | 15948 | +            ClickInfo info = object.clickInfo;  | 
|---|
 | 15949 | +            //ClickInfo info = new ClickInfo();  | 
|---|
 | 15950 | +            info.bounds.setBounds(0, 0, (int) (width * zoom), (int) (height * zoom));  | 
|---|
 | 15951 | +          | 
|---|
| 15943 | 15952 |              if (isRenderer) | 
|---|
| 15944 | 15953 |              { | 
|---|
| 15945 |  | -                info.flags++;  | 
|---|
 | 15954 | +                object.clickInfo.flags++;  | 
|---|
| 15946 | 15955 |                  double frameAspect = (double) width / (double) height; | 
|---|
| 15947 | 15956 |                  if (frameAspect > renderCamera.aspect) | 
|---|
| 15948 | 15957 |                  { | 
|---|
| 15949 | 15958 |                      int desired = (int) ((double) height * renderCamera.aspect); | 
|---|
| 15950 |  | -                    info.bounds.width -= width - desired;  | 
|---|
| 15951 |  | -                    info.bounds.x += (width - desired) / 2;  | 
|---|
 | 15959 | +                    object.clickInfo.bounds.width -= width - desired;  | 
|---|
 | 15960 | +                    object.clickInfo.bounds.x += (width - desired) / 2;  | 
|---|
| 15952 | 15961 |                  } else | 
|---|
| 15953 | 15962 |                  { | 
|---|
| 15954 | 15963 |                      int desired = (int) ((double) width / renderCamera.aspect); | 
|---|
| 15955 |  | -                    info.bounds.height -= height - desired;  | 
|---|
| 15956 |  | -                    info.bounds.y += (height - desired) / 2;  | 
|---|
 | 15964 | +                    object.clickInfo.bounds.height -= height - desired;  | 
|---|
 | 15965 | +                    object.clickInfo.bounds.y += (height - desired) / 2;  | 
|---|
| 15957 | 15966 |                  } | 
|---|
| 15958 | 15967 |              } | 
|---|
| 15959 | 15968 |               | 
|---|
| 15960 |  | -            info.g = gr;  | 
|---|
| 15961 |  | -            info.camera = renderCamera;  | 
|---|
 | 15969 | +            object.clickInfo.g = gr;  | 
|---|
 | 15970 | +            object.clickInfo.camera = renderCamera;  | 
|---|
| 15962 | 15971 |              /*  | 
|---|
| 15963 | 15972 |              // Memory intensive (brep.verticescopy) | 
|---|
| 15964 | 15973 |              if (!(object instanceof Composite)) | 
|---|
| 15965 | 15974 |              object.draw(info, 0, false); // SLOW :  | 
|---|
| 15966 | 15975 |               */ | 
|---|
| 15967 |  | -            if (!isRenderer)  | 
|---|
 | 15976 | +            if (!isRenderer) // && drag)  | 
|---|
| 15968 | 15977 |              { | 
|---|
| 15969 | 15978 |                  Grafreed.Assert(object != null); | 
|---|
| 15970 | 15979 |                  Grafreed.Assert(object.selection != null); | 
|---|
| .. | .. | 
|---|
| 15972 | 15981 |                  { | 
|---|
| 15973 | 15982 |                      int hitSomething = object.selection.get(0).hitSomething; | 
|---|
| 15974 | 15983 |   | 
|---|
| 15975 |  | -                    info.DX = 0;  | 
|---|
| 15976 |  | -                    info.DY = 0;  | 
|---|
| 15977 |  | -                    info.W = 1;  | 
|---|
 | 15984 | +                    object.clickInfo.DX = 0;  | 
|---|
 | 15985 | +                    object.clickInfo.DY = 0;  | 
|---|
 | 15986 | +                    object.clickInfo.W = 1;  | 
|---|
| 15978 | 15987 |                      if (hitSomething == Object3D.hitCenter) | 
|---|
| 15979 | 15988 |                      { | 
|---|
| 15980 | 15989 |                          info.DX = X; | 
|---|
| .. | .. | 
|---|
| 15986 | 15995 |                              info.DY -= info.bounds.height/2; | 
|---|
| 15987 | 15996 |                      } | 
|---|
| 15988 | 15997 |   | 
|---|
| 15989 |  | -                    object.drawEditHandles(info, 0);  | 
|---|
 | 15998 | +                    object.drawEditHandles(//info,  | 
|---|
 | 15999 | +                                            0);  | 
|---|
| 15990 | 16000 |   | 
|---|
| 15991 | 16001 |                      if (drag && (X != 0 || Y != 0)) | 
|---|
| 15992 | 16002 |                      { | 
|---|
| .. | .. | 
|---|
| 15999 | 16009 |                                  gr.drawLine(X, Y, info.bounds.width/2, info.bounds.height/2); | 
|---|
| 16000 | 16010 |                              break; | 
|---|
| 16001 | 16011 |                              case Object3D.hitScale: gr.setColor(Color.cyan); | 
|---|
| 16002 |  | -                                gr.drawLine(X, Y, info.bounds.width/2, info.bounds.height/2);  | 
|---|
 | 16012 | +                                gr.drawLine(X, Y, 0, 0);  | 
|---|
| 16003 | 16013 |                              break; | 
|---|
| 16004 | 16014 |                          } | 
|---|
| 16005 | 16015 |   | 
|---|
 
| .. | .. | 
|---|
| 12 | 12 |      ClickInfo() | 
|---|
| 13 | 13 |      { | 
|---|
| 14 | 14 |          bounds = new Rectangle(); | 
|---|
 | 15 | +        System.out.println("CLICKINFO");  | 
|---|
| 15 | 16 |      } | 
|---|
| 16 | 17 |   | 
|---|
| 17 | 18 |      static final int kCamera = 1; | 
|---|
| .. | .. | 
|---|
| 28 | 29 |      Graphics g; | 
|---|
| 29 | 30 |      int DX, DY; | 
|---|
| 30 | 31 |      float W = 1; | 
|---|
 | 32 | +      | 
|---|
 | 33 | +    double scale; // Distance from clicked point to origin  | 
|---|
| 31 | 34 |   | 
|---|
| 32 | 35 |      static double matbuffer[][] = new double[4][4]; | 
|---|
| 33 | 36 |  } | 
|---|
 
| .. | .. | 
|---|
| 790 | 790 |   | 
|---|
| 791 | 791 |      void draw(ClickInfo info, int level, boolean select) | 
|---|
| 792 | 792 |      { | 
|---|
 | 793 | +        new Exception().printStackTrace();  | 
|---|
 | 794 | +          | 
|---|
| 793 | 795 |          ClickInfo newInfo = new ClickInfo(); | 
|---|
| 794 | 796 |          newInfo.flags = info.flags; | 
|---|
| 795 | 797 |          newInfo.bounds = info.bounds; | 
|---|
 
| .. | .. | 
|---|
| 2 | 2 |   | 
|---|
| 3 | 3 |  class Cone extends Biparam implements java.io.Serializable | 
|---|
| 4 | 4 |  { | 
|---|
| 5 |  | -    //static final long serialVersionUID = -679715043452968126L;  | 
|---|
 | 5 | +    static final long serialVersionUID = -2558098774090336324L; // -679715043452968126L;  | 
|---|
| 6 | 6 |   | 
|---|
| 7 | 7 |      Cone() | 
|---|
| 8 | 8 |      { | 
|---|
| .. | .. | 
|---|
| 263 | 263 |          editWindow = objectUI.GetEditor(); | 
|---|
| 264 | 264 |      } | 
|---|
| 265 | 265 |   | 
|---|
| 266 |  | -    void drawEditHandles(ClickInfo info, int level)  | 
|---|
 | 266 | +    void drawEditHandles(//ClickInfo info,  | 
|---|
 | 267 | +            int level)  | 
|---|
| 267 | 268 |      { | 
|---|
| 268 |  | -        super.drawEditHandles(info, level);  | 
|---|
 | 269 | +        super.drawEditHandles(//info,  | 
|---|
 | 270 | +                level);  | 
|---|
| 269 | 271 |          if (level == 1) | 
|---|
| 270 | 272 |          { | 
|---|
| 271 | 273 |              return; | 
|---|
| .. | .. | 
|---|
| 273 | 275 |          { | 
|---|
| 274 | 276 |              cVector temp = new cVector(); | 
|---|
| 275 | 277 |              LA.xformPos(base, toParent, temp); | 
|---|
| 276 |  | -            Rectangle baseSpot = calcHotSpot(temp, info);  | 
|---|
 | 278 | +            Rectangle baseSpot = calcHotSpot(temp); //, info);  | 
|---|
| 277 | 279 |              LA.xformPos(apex, toParent, temp); | 
|---|
| 278 |  | -            Rectangle apexSpot = calcHotSpot(temp, info);  | 
|---|
| 279 |  | -            info.g.setColor(Color.green);  | 
|---|
| 280 |  | -            info.g.fillRect(baseSpot.x, baseSpot.y, baseSpot.width, baseSpot.height);  | 
|---|
| 281 |  | -            info.g.fillRect(apexSpot.x, apexSpot.y, apexSpot.width, apexSpot.height);  | 
|---|
 | 280 | +            Rectangle apexSpot = calcHotSpot(temp); //, info);  | 
|---|
 | 281 | +            clickInfo.g.setColor(Color.green);  | 
|---|
 | 282 | +            clickInfo.g.fillRect(baseSpot.x, baseSpot.y, baseSpot.width, baseSpot.height);  | 
|---|
 | 283 | +            clickInfo.g.fillRect(apexSpot.x, apexSpot.y, apexSpot.width, apexSpot.height);  | 
|---|
| 282 | 284 |              return; | 
|---|
| 283 | 285 |          } | 
|---|
| 284 | 286 |      } | 
|---|
| 285 | 287 |   | 
|---|
| 286 |  | -    boolean doEditClick(ClickInfo info, int level)  | 
|---|
 | 288 | +    boolean doEditClick(//ClickInfo info,  | 
|---|
 | 289 | +            int level)  | 
|---|
| 287 | 290 |      { | 
|---|
| 288 | 291 |          //if (level == 0) | 
|---|
| 289 | 292 |              //return false; | 
|---|
| 290 | 293 |          hitSomething = 0; | 
|---|
| 291 |  | -        if (super.doEditClick(info, level))  | 
|---|
 | 294 | +        if (super.doEditClick(//info,  | 
|---|
 | 295 | +                level))  | 
|---|
| 292 | 296 |          { | 
|---|
| 293 | 297 |              hitSomething = 1; | 
|---|
| 294 | 298 |              return true; | 
|---|
| 295 | 299 |          } | 
|---|
| 296 | 300 |          cVector temp = new cVector(); | 
|---|
| 297 | 301 |          LA.xformPos(base, toParent, temp); | 
|---|
| 298 |  | -        Rectangle baseSpot = calcHotSpot(temp, info);  | 
|---|
 | 302 | +        Rectangle baseSpot = calcHotSpot(temp); //, info);  | 
|---|
| 299 | 303 |          LA.xformPos(apex, toParent, temp); | 
|---|
| 300 |  | -        Rectangle apexSpot = calcHotSpot(temp, info);  | 
|---|
| 301 |  | -        if (baseSpot.contains(info.x, info.y))  | 
|---|
 | 304 | +        Rectangle apexSpot = calcHotSpot(temp); //, info);  | 
|---|
 | 305 | +        if (baseSpot.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 302 | 306 |          { | 
|---|
| 303 | 307 |              hitSomething = 2; | 
|---|
| 304 | 308 |              startRad = baseRadius; | 
|---|
| 305 | 309 |          } else | 
|---|
| 306 |  | -        if (apexSpot.contains(info.x, info.y))  | 
|---|
 | 310 | +        if (apexSpot.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 307 | 311 |          { | 
|---|
| 308 | 312 |              hitSomething = 3; | 
|---|
| 309 | 313 |              startRad = apexRadius; | 
|---|
| .. | .. | 
|---|
| 311 | 315 |          { | 
|---|
| 312 | 316 |              return false; | 
|---|
| 313 | 317 |          } | 
|---|
| 314 |  | -        startX = info.x;  | 
|---|
 | 318 | +        startX = clickInfo.x;  | 
|---|
| 315 | 319 |          return true; | 
|---|
| 316 | 320 |      } | 
|---|
| 317 | 321 |   | 
|---|
| 318 |  | -    void doEditDrag(ClickInfo info, boolean opposite)  | 
|---|
 | 322 | +    void doEditDrag(//ClickInfo info,  | 
|---|
 | 323 | +            boolean opposite)  | 
|---|
| 319 | 324 |      { | 
|---|
| 320 | 325 |          if (hitSomething == 0) | 
|---|
| 321 | 326 |              return; | 
|---|
| 322 | 327 |          if (hitSomething == 1) | 
|---|
| 323 | 328 |          { | 
|---|
| 324 |  | -            super.doEditDrag(info, opposite);  | 
|---|
 | 329 | +            super.doEditDrag(//info,  | 
|---|
 | 330 | +                    opposite);  | 
|---|
| 325 | 331 |              return; | 
|---|
| 326 | 332 |          } | 
|---|
| 327 |  | -        double deltaR = info.x - startX;  | 
|---|
 | 333 | +        double deltaR = clickInfo.x - startX;  | 
|---|
| 328 | 334 |          double newRad = startRad + deltaR; | 
|---|
| 329 | 335 |          if (newRad < 0) | 
|---|
| 330 | 336 |              newRad = 0; | 
|---|
| .. | .. | 
|---|
| 333 | 339 |          else | 
|---|
| 334 | 340 |              apexRadius = newRad; | 
|---|
| 335 | 341 |          recalculate(); | 
|---|
| 336 |  | -        info.pane.repaint();  | 
|---|
 | 342 | +        clickInfo.pane.repaint();  | 
|---|
| 337 | 343 |      } | 
|---|
| 338 | 344 |   | 
|---|
| 339 | 345 |      cVector base; | 
|---|
 
| .. | .. | 
|---|
| 2567 | 2567 |      private static final int editSelf = 1; | 
|---|
| 2568 | 2568 |      private static final int editChild = 2; | 
|---|
| 2569 | 2569 |       | 
|---|
| 2570 |  | -    void drawEditHandles(ClickInfo info, int level)  | 
|---|
 | 2570 | +    void drawEditHandles(//ClickInfo info,  | 
|---|
 | 2571 | +            int level)  | 
|---|
| 2571 | 2572 |      { | 
|---|
| 2572 | 2573 |          if (level == 0) | 
|---|
| 2573 | 2574 |          { | 
|---|
| .. | .. | 
|---|
| 2575 | 2576 |                  return; | 
|---|
| 2576 | 2577 |               | 
|---|
| 2577 | 2578 |              Object3D selectee; | 
|---|
| 2578 |  | -            for (java.util.Enumeration e = selection.elements(); e.hasMoreElements(); selectee.drawEditHandles(info, level + 1))  | 
|---|
 | 2579 | +            for (java.util.Enumeration e = selection.elements(); e.hasMoreElements(); selectee.drawEditHandles(//info,  | 
|---|
 | 2580 | +                                                                                                        level + 1))  | 
|---|
| 2579 | 2581 |              { | 
|---|
| 2580 | 2582 |                  selectee = (Object3D) e.nextElement(); | 
|---|
| 2581 | 2583 |              } | 
|---|
| .. | .. | 
|---|
| 2583 | 2585 |          } else | 
|---|
| 2584 | 2586 |          { | 
|---|
| 2585 | 2587 |              //super. | 
|---|
| 2586 |  | -                    drawEditHandles0(info, level + 1);  | 
|---|
 | 2588 | +                    drawEditHandles0(//info,  | 
|---|
 | 2589 | +                            level + 1);  | 
|---|
| 2587 | 2590 |          } | 
|---|
| 2588 | 2591 |      } | 
|---|
| 2589 | 2592 |   | 
|---|
| 2590 |  | -    boolean doEditClick(ClickInfo info, int level)  | 
|---|
 | 2593 | +    boolean doEditClick(//ClickInfo info,  | 
|---|
 | 2594 | +            int level)  | 
|---|
| 2591 | 2595 |      { | 
|---|
| 2592 | 2596 |          doSomething = 0; | 
|---|
| 2593 | 2597 |          if (level == 0) | 
|---|
| 2594 | 2598 |          { | 
|---|
| 2595 |  | -            return doParentClick(info);  | 
|---|
 | 2599 | +            return doParentClick(); //info);  | 
|---|
| 2596 | 2600 |          } | 
|---|
| 2597 | 2601 |          if (//super. | 
|---|
| 2598 |  | -                doEditClick0(info, level))  | 
|---|
 | 2602 | +                doEditClick0(//info,  | 
|---|
 | 2603 | +                    level))  | 
|---|
| 2599 | 2604 |          { | 
|---|
| 2600 | 2605 |              doSomething = 1; | 
|---|
| 2601 | 2606 |              return true; | 
|---|
| .. | .. | 
|---|
| 2605 | 2610 |          } | 
|---|
| 2606 | 2611 |      } | 
|---|
| 2607 | 2612 |   | 
|---|
| 2608 |  | -    boolean doParentClick(ClickInfo info)  | 
|---|
 | 2613 | +    boolean doParentClick() //ClickInfo info)  | 
|---|
| 2609 | 2614 |      { | 
|---|
| 2610 | 2615 |          if (selection == null) | 
|---|
| 2611 | 2616 |          { | 
|---|
| .. | .. | 
|---|
| 2618 | 2623 |          for (java.util.Enumeration e = selection.elements(); e.hasMoreElements();) | 
|---|
| 2619 | 2624 |          { | 
|---|
| 2620 | 2625 |              Object3D selectee = (Object3D) e.nextElement(); | 
|---|
| 2621 |  | -            if (selectee.doEditClick(info, 1))  | 
|---|
 | 2626 | +            if (selectee.doEditClick(//info,  | 
|---|
 | 2627 | +                    1))  | 
|---|
| 2622 | 2628 |              { | 
|---|
| 2623 | 2629 |                  childToDrag = selectee; | 
|---|
| 2624 | 2630 |                  doSomething = 2; | 
|---|
| .. | .. | 
|---|
| 2630 | 2636 |          return retval; | 
|---|
| 2631 | 2637 |      } | 
|---|
| 2632 | 2638 |   | 
|---|
| 2633 |  | -    void doEditDrag(ClickInfo info, boolean opposite)  | 
|---|
 | 2639 | +    void doEditDrag(//ClickInfo clickInfo,  | 
|---|
 | 2640 | +            boolean opposite)  | 
|---|
| 2634 | 2641 |      { | 
|---|
| 2635 | 2642 |          switch (doSomething) | 
|---|
| 2636 | 2643 |          { | 
|---|
| 2637 | 2644 |              case 1: // '\001' | 
|---|
| 2638 | 2645 |                  //super. | 
|---|
| 2639 |  | -                        doEditDrag0(info, opposite);  | 
|---|
 | 2646 | +                        doEditDrag0(//clickInfo,  | 
|---|
 | 2647 | +                                opposite);  | 
|---|
| 2640 | 2648 |                  break; | 
|---|
| 2641 | 2649 |   | 
|---|
| 2642 | 2650 |              case 2: // '\002' | 
|---|
| .. | .. | 
|---|
| 2649 | 2657 |                      { | 
|---|
| 2650 | 2658 |                          //sel.hitSomething = childToDrag.hitSomething; | 
|---|
| 2651 | 2659 |                          //childToDrag.doEditDrag(info); | 
|---|
| 2652 |  | -                        sel.doEditDrag(info, opposite);  | 
|---|
 | 2660 | +                        sel.doEditDrag(//clickInfo,  | 
|---|
 | 2661 | +                                opposite);  | 
|---|
| 2653 | 2662 |                      } else | 
|---|
| 2654 | 2663 |                      { | 
|---|
| 2655 | 2664 |                          //super. | 
|---|
| 2656 |  | -                                doEditDrag0(info, opposite);  | 
|---|
 | 2665 | +                                doEditDrag0(//clickInfo,  | 
|---|
 | 2666 | +                                        opposite);  | 
|---|
| 2657 | 2667 |                      } | 
|---|
| 2658 | 2668 |                  } | 
|---|
| 2659 | 2669 |                  break; | 
|---|
| .. | .. | 
|---|
| 2671 | 2681 |          { | 
|---|
| 2672 | 2682 |              deselectAll(); | 
|---|
| 2673 | 2683 |          } | 
|---|
 | 2684 | +          | 
|---|
 | 2685 | +        new Exception().printStackTrace();  | 
|---|
 | 2686 | +          | 
|---|
| 2674 | 2687 |          ClickInfo newInfo = new ClickInfo(); | 
|---|
| 2675 | 2688 |          newInfo.flags = info.flags; | 
|---|
| 2676 | 2689 |          newInfo.bounds = info.bounds; | 
|---|
| .. | .. | 
|---|
| 7298 | 7311 |          } | 
|---|
| 7299 | 7312 |      } | 
|---|
| 7300 | 7313 |   | 
|---|
| 7301 |  | -    protected void calcHotSpot(cVector in, ClickInfo info, Point outPt, Rectangle outRec)  | 
|---|
 | 7314 | +    static ClickInfo clickInfo = new ClickInfo();  | 
|---|
 | 7315 | +          | 
|---|
 | 7316 | +    protected void calcHotSpot(cVector in, //ClickInfo clickInfo,  | 
|---|
 | 7317 | +            Point outPt, Rectangle outRec)  | 
|---|
| 7302 | 7318 |      { | 
|---|
| 7303 |  | -        int hc = info.bounds.x + info.bounds.width / 2;  | 
|---|
| 7304 |  | -        int vc = info.bounds.y + info.bounds.height / 2;  | 
|---|
| 7305 |  | -        double[][] toscreen = info.toScreen;  | 
|---|
 | 7319 | +        int hc = clickInfo.bounds.x + clickInfo.bounds.width / 2;  | 
|---|
 | 7320 | +        int vc = clickInfo.bounds.y + clickInfo.bounds.height / 2;  | 
|---|
 | 7321 | +        double[][] toscreen = clickInfo.toScreen;  | 
|---|
| 7306 | 7322 |          if (toscreen == null) | 
|---|
| 7307 | 7323 |          { | 
|---|
| 7308 |  | -            toscreen = new Camera(info.camera.viewCode).toScreen;  | 
|---|
 | 7324 | +            toscreen = new Camera(clickInfo.camera.viewCode).toScreen;  | 
|---|
| 7309 | 7325 |          } | 
|---|
| 7310 | 7326 |          cVector vec = in; | 
|---|
| 7311 | 7327 |          LA.xformPos(in, toscreen, in); | 
|---|
| 7312 | 7328 |          //System.out.println("Distance = " + info.camera.Distance()); | 
|---|
| 7313 |  | -        vec.x *= 100 * info.camera.SCALE / info.camera.Distance();  | 
|---|
| 7314 |  | -        vec.y *= 100 * info.camera.SCALE / info.camera.Distance();  | 
|---|
 | 7329 | +        vec.x *= 100 * clickInfo.camera.SCALE / clickInfo.camera.Distance();  | 
|---|
 | 7330 | +        vec.y *= 100 * clickInfo.camera.SCALE / clickInfo.camera.Distance();  | 
|---|
| 7315 | 7331 |          outPt.x = hc + (int) vec.x; | 
|---|
| 7316 | 7332 |          outPt.y = vc - (int) vec.y; | 
|---|
| 7317 | 7333 |          outRec.x = outPt.x - 3; | 
|---|
| .. | .. | 
|---|
| 7319 | 7335 |          outRec.width = outRec.height = 6; | 
|---|
| 7320 | 7336 |      } | 
|---|
| 7321 | 7337 |   | 
|---|
| 7322 |  | -    protected Rectangle calcHotSpot(cVector in, ClickInfo info)  | 
|---|
 | 7338 | +    protected Rectangle calcHotSpot(cVector in//, ClickInfo clickInfo  | 
|---|
 | 7339 | +            )  | 
|---|
| 7323 | 7340 |      { | 
|---|
| 7324 | 7341 |          Point pt = new Point(0, 0); | 
|---|
| 7325 | 7342 |          Rectangle rec = new Rectangle(); | 
|---|
| 7326 |  | -        calcHotSpot(in, info, pt, rec);  | 
|---|
 | 7343 | +        calcHotSpot(in, //clickInfo,  | 
|---|
 | 7344 | +                pt, rec);  | 
|---|
| 7327 | 7345 |          return rec; | 
|---|
| 7328 | 7346 |      } | 
|---|
| 7329 | 7347 |   | 
|---|
| 7330 |  | -    void drawEditHandles0(ClickInfo info, int level)  | 
|---|
 | 7348 | +    void drawEditHandles0(//ClickInfo clickInfo,  | 
|---|
 | 7349 | +            int level)  | 
|---|
| 7331 | 7350 |      { | 
|---|
| 7332 | 7351 |          if (level == 0) | 
|---|
| 7333 | 7352 |          { | 
|---|
| .. | .. | 
|---|
| 7336 | 7355 |          { | 
|---|
| 7337 | 7356 |              cVector origin = new cVector(); | 
|---|
| 7338 | 7357 |              //LA.xformPos(origin, toParent, origin); | 
|---|
| 7339 |  | -            Rectangle spot = calcHotSpot(origin, info);  | 
|---|
 | 7358 | +            if (this.clickInfo == null)  | 
|---|
 | 7359 | +                this.clickInfo = new ClickInfo();  | 
|---|
 | 7360 | +              | 
|---|
 | 7361 | +            Rectangle spot = calcHotSpot(origin); //, clickInfo);  | 
|---|
| 7340 | 7362 |              Rectangle boundary = new Rectangle(); | 
|---|
| 7341 | 7363 |              boundary.x = spot.x - 30; | 
|---|
| 7342 | 7364 |              boundary.y = spot.y - 30; | 
|---|
| 7343 | 7365 |              boundary.width = spot.width + 60; | 
|---|
| 7344 | 7366 |              boundary.height = spot.height + 60; | 
|---|
| 7345 |  | -            info.g.setColor(Color.red);  | 
|---|
 | 7367 | +            clickInfo.g.setColor(Color.red);  | 
|---|
| 7346 | 7368 |              int spotw = spot.x + spot.width; | 
|---|
| 7347 | 7369 |              int spoth = spot.y + spot.height; | 
|---|
| 7348 |  | -            info.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
 | 7370 | +            clickInfo.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
| 7349 | 7371 |  //            if (CameraPane.Xmin > spot.x) | 
|---|
| 7350 | 7372 |  //            { | 
|---|
| 7351 | 7373 |  //                CameraPane.Xmin = spot.x; | 
|---|
| .. | .. | 
|---|
| 7365 | 7387 |              spot.translate(32, 32); | 
|---|
| 7366 | 7388 |              spotw = spot.x + spot.width; | 
|---|
| 7367 | 7389 |              spoth = spot.y + spot.height; | 
|---|
| 7368 |  | -            info.g.setColor(Color.cyan);  | 
|---|
| 7369 |  | -            info.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
 | 7390 | +            clickInfo.g.setColor(Color.cyan);  | 
|---|
 | 7391 | +            clickInfo.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
| 7370 | 7392 |  //            if (CameraPane.Xmin > spot.x) | 
|---|
| 7371 | 7393 |  //            { | 
|---|
| 7372 | 7394 |  //                CameraPane.Xmin = spot.x; | 
|---|
| .. | .. | 
|---|
| 7386 | 7408 |              // bonhommes info.g.drawLine(spotw, spoth, spotw, spoth - boundary.height/2); // 15 | 
|---|
| 7387 | 7409 |              //info.g.drawLine(spotw, spoth, spotw - boundary.width/2, spoth); // 15 | 
|---|
| 7388 | 7410 |              spot.translate(0, -32); | 
|---|
| 7389 |  | -            info.g.setColor(Color.yellow);  | 
|---|
| 7390 |  | -            info.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
| 7391 |  | -            info.g.setColor(Color.green);  | 
|---|
 | 7411 | +            clickInfo.g.setColor(Color.yellow);  | 
|---|
 | 7412 | +            clickInfo.g.fillRect(spot.x, spot.y, spot.width, spot.height);  | 
|---|
 | 7413 | +            clickInfo.g.setColor(Color.green);  | 
|---|
| 7392 | 7414 |  //            if (CameraPane.Xmin > spot.x) | 
|---|
| 7393 | 7415 |  //            { | 
|---|
| 7394 | 7416 |  //                CameraPane.Xmin = spot.x; | 
|---|
| .. | .. | 
|---|
| 7405 | 7427 |  //            { | 
|---|
| 7406 | 7428 |  //                CameraPane.Ymax = spoth; | 
|---|
| 7407 | 7429 |  //            } | 
|---|
| 7408 |  | -            info.g.drawArc(boundary.x + info.DX, boundary.y + info.DY,  | 
|---|
| 7409 |  | -                    (int)(boundary.width * info.W), (int)(boundary.height * info.W), 0, 360);  | 
|---|
 | 7430 | +            clickInfo.g.drawArc(boundary.x + clickInfo.DX, boundary.y + clickInfo.DY,  | 
|---|
 | 7431 | +                    (int)(boundary.width * clickInfo.W), (int)(boundary.height * clickInfo.W), 0, 360);  | 
|---|
| 7410 | 7432 |              //info.g.drawArc(spot.x, spotw, spot.width/2, boundary.height/2, 0, 360); | 
|---|
| 7411 | 7433 |  //            if (CameraPane.Xmin > boundary.x) | 
|---|
| 7412 | 7434 |  //            { | 
|---|
| .. | .. | 
|---|
| 7428 | 7450 |          } | 
|---|
| 7429 | 7451 |      } | 
|---|
| 7430 | 7452 |   | 
|---|
| 7431 |  | -    boolean doEditClick0(ClickInfo info, int level)  | 
|---|
 | 7453 | +    boolean doEditClick0(//ClickInfo clickInfo,   | 
|---|
 | 7454 | +                int level)  | 
|---|
| 7432 | 7455 |      { | 
|---|
| 7433 | 7456 |          if (level == 0) | 
|---|
| 7434 | 7457 |          { | 
|---|
| .. | .. | 
|---|
| 7437 | 7460 |   | 
|---|
| 7438 | 7461 |          boolean retval = false; | 
|---|
| 7439 | 7462 |   | 
|---|
| 7440 |  | -        startX = info.x;  | 
|---|
| 7441 |  | -        startY = info.y;  | 
|---|
 | 7463 | +        startX = clickInfo.x;  | 
|---|
 | 7464 | +        startY = clickInfo.y;  | 
|---|
| 7442 | 7465 |   | 
|---|
| 7443 | 7466 |          hitSomething = -1; | 
|---|
| 7444 | 7467 |          cVector origin = new cVector(); | 
|---|
| .. | .. | 
|---|
| 7448 | 7471 |          { | 
|---|
| 7449 | 7472 |              centerPt = new Point(0, 0); | 
|---|
| 7450 | 7473 |          } | 
|---|
| 7451 |  | -        calcHotSpot(origin, info, centerPt, spot);  | 
|---|
| 7452 |  | -        if (spot.contains(info.x, info.y))  | 
|---|
 | 7474 | +        calcHotSpot(origin, //info,  | 
|---|
 | 7475 | +                centerPt, spot);  | 
|---|
 | 7476 | +        if (spot.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 7453 | 7477 |          { | 
|---|
| 7454 | 7478 |              hitSomething = hitCenter; | 
|---|
| 7455 | 7479 |              retval = true; | 
|---|
| 7456 | 7480 |          } | 
|---|
| 7457 | 7481 |          spot.translate(32, 0); | 
|---|
| 7458 |  | -        if (spot.contains(info.x, info.y))  | 
|---|
 | 7482 | +        if (spot.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 7459 | 7483 |          { | 
|---|
| 7460 | 7484 |              hitSomething = hitRotate; | 
|---|
| 7461 | 7485 |              retval = true; | 
|---|
| 7462 | 7486 |          } | 
|---|
| 7463 | 7487 |          spot.translate(0, 32); | 
|---|
| 7464 |  | -        if (spot.contains(info.x, info.y))  | 
|---|
 | 7488 | +        if (spot.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 7465 | 7489 |          { | 
|---|
| 7466 | 7490 |              hitSomething = hitScale; | 
|---|
 | 7491 | +              | 
|---|
 | 7492 | +        double scale = 0.005f * clickInfo.camera.Distance();  | 
|---|
 | 7493 | +                double hScale = (double) (clickInfo.x /*- centerPt.x*/) / 32;  | 
|---|
 | 7494 | +                double sign = 1;  | 
|---|
 | 7495 | +                if (hScale < 0)  | 
|---|
 | 7496 | +                {  | 
|---|
 | 7497 | +                    sign = -1;  | 
|---|
 | 7498 | +                }  | 
|---|
 | 7499 | +                hScale = sign*Math.pow(sign*hScale, scale * 50);  | 
|---|
 | 7500 | +                if (hScale < 0.01)  | 
|---|
 | 7501 | +                {  | 
|---|
 | 7502 | +                    //hScale = 0.01;  | 
|---|
 | 7503 | +                }  | 
|---|
 | 7504 | +                  | 
|---|
 | 7505 | +                double vScale = (double) (clickInfo.y /*- centerPt.y*/) / 32;  | 
|---|
 | 7506 | +                sign = 1;  | 
|---|
 | 7507 | +                if (vScale < 0)  | 
|---|
 | 7508 | +                {  | 
|---|
 | 7509 | +                    sign = -1;  | 
|---|
 | 7510 | +                }  | 
|---|
 | 7511 | +                vScale = sign*Math.pow(sign*vScale, scale * 50);  | 
|---|
 | 7512 | +                if (vScale < 0.01)  | 
|---|
 | 7513 | +                {  | 
|---|
 | 7514 | +                    //vScale = 0.01;  | 
|---|
 | 7515 | +                }  | 
|---|
 | 7516 | +                  | 
|---|
 | 7517 | +                clickInfo.scale = Math.sqrt(hScale*hScale + vScale*vScale);  | 
|---|
 | 7518 | +                  | 
|---|
| 7467 | 7519 |              retval = true; | 
|---|
| 7468 | 7520 |          } | 
|---|
| 7469 | 7521 |   | 
|---|
| .. | .. | 
|---|
| 7473 | 7525 |          } | 
|---|
| 7474 | 7526 |   | 
|---|
| 7475 | 7527 |          //System.out.println("info.modifiers = " + info.modifiers); | 
|---|
| 7476 |  | -        modified = (info.modifiers & CameraPane.SHIFT) != 0; // Was META  | 
|---|
 | 7528 | +        modified = (clickInfo.modifiers & CameraPane.SHIFT) != 0; // Was META  | 
|---|
| 7477 | 7529 |          //System.out.println("modified = " + modified); | 
|---|
| 7478 | 7530 |          //new Exception().printStackTrace(); | 
|---|
| 7479 | 7531 |          //viewCode = info.pane.renderCamera.viewCode; | 
|---|
| .. | .. | 
|---|
| 7501 | 7553 |          return true; | 
|---|
| 7502 | 7554 |      } | 
|---|
| 7503 | 7555 |   | 
|---|
| 7504 |  | -    void doEditDrag0(ClickInfo info, boolean opposite)  | 
|---|
 | 7556 | +    void doEditDrag0(//ClickInfo info,  | 
|---|
 | 7557 | +            boolean opposite)  | 
|---|
| 7505 | 7558 |      { | 
|---|
| 7506 | 7559 |          if (hitSomething == 0) | 
|---|
| 7507 | 7560 |          { | 
|---|
| .. | .. | 
|---|
| 7515 | 7568 |   | 
|---|
| 7516 | 7569 |          //System.out.println("hitSomething = " + hitSomething); | 
|---|
| 7517 | 7570 |   | 
|---|
| 7518 |  | -        double scale = 0.005f * info.camera.Distance();  | 
|---|
 | 7571 | +        double scale = 0.005f * clickInfo.camera.Distance();  | 
|---|
| 7519 | 7572 |           | 
|---|
| 7520 | 7573 |          cVector xlate = new cVector(); | 
|---|
| 7521 | 7574 |          //cVector xlate2 = new cVector(); | 
|---|
| .. | .. | 
|---|
| 7549 | 7602 |                      toParent[3][i] = xlate.get(i); | 
|---|
| 7550 | 7603 |                      LA.matInvert(toParent, fromParent); | 
|---|
| 7551 | 7604 |                       */ | 
|---|
| 7552 |  | -                    cVector delta = LA.newVector(0, 0, startY - info.y);  | 
|---|
| 7553 |  | -                    LA.xformDir(delta, new Camera(info.camera.viewCode).fromScreen, delta);  | 
|---|
 | 7605 | +                    cVector delta = LA.newVector(0, 0, startY - clickInfo.y);  | 
|---|
 | 7606 | +                    LA.xformDir(delta, new Camera(clickInfo.camera.viewCode).fromScreen, delta);  | 
|---|
| 7554 | 7607 |   | 
|---|
| 7555 | 7608 |                      LA.matCopy(startMat, toParent); | 
|---|
| 7556 | 7609 |                      LA.matTranslate(toParent, delta.x * scale, delta.y * scale, delta.z * scale); | 
|---|
| .. | .. | 
|---|
| 7559 | 7612 |                  } else | 
|---|
| 7560 | 7613 |                  { | 
|---|
| 7561 | 7614 |                      //LA.xformDir(delta, info.camera.fromScreen, delta); | 
|---|
| 7562 |  | -                    cVector up = new cVector(info.camera.up);  | 
|---|
 | 7615 | +                    cVector up = new cVector(clickInfo.camera.up);  | 
|---|
| 7563 | 7616 |                      cVector away = new cVector(); | 
|---|
| 7564 | 7617 |                      //cVector right2 = new cVector(); | 
|---|
| 7565 | 7618 |                      //LA.vecCross(up, cVector.Z, right); | 
|---|
| .. | .. | 
|---|
| 7576 | 7629 |                      LA.xformDir(up, ClickInfo.matbuffer, up); | 
|---|
| 7577 | 7630 |      //                if (!CameraPane.LOCALTRANSFORM) | 
|---|
| 7578 | 7631 |                          LA.xformDir(up, Globals.theRenderer.RenderCamera().toScreen, up); | 
|---|
| 7579 |  | -                    LA.xformDir(info.camera.away, ClickInfo.matbuffer, away);  | 
|---|
 | 7632 | +                    LA.xformDir(clickInfo.camera.away, ClickInfo.matbuffer, away);  | 
|---|
| 7580 | 7633 |      //                if (!CameraPane.LOCALTRANSFORM) | 
|---|
| 7581 | 7634 |                          LA.xformDir(away, Globals.theRenderer.RenderCamera().toScreen, away); | 
|---|
| 7582 | 7635 |                      //LA.vecCross(up, cVector.Z, right2); | 
|---|
| 7583 | 7636 |   | 
|---|
| 7584 |  | -                    cVector delta = LA.newVector(info.x - startX, startY - info.y, 0);  | 
|---|
 | 7637 | +                    cVector delta = LA.newVector(clickInfo.x - startX, startY - clickInfo.y, 0);  | 
|---|
| 7585 | 7638 |   | 
|---|
| 7586 | 7639 |                      //System.out.println("DELTA0 = " + delta); | 
|---|
| 7587 | 7640 |                      //System.out.println("AWAY = " + info.camera.away); | 
|---|
| 7588 | 7641 |                      //System.out.println("UP = " + info.camera.up); | 
|---|
| 7589 | 7642 |                      if (away.z > 0) | 
|---|
| 7590 | 7643 |                      { | 
|---|
| 7591 |  | -                        if (info.camera.up.x == 0) // LA.vecDot(right, right2)<0)  | 
|---|
 | 7644 | +                        if (clickInfo.camera.up.x == 0) // LA.vecDot(right, right2)<0)  | 
|---|
| 7592 | 7645 |                          { | 
|---|
| 7593 | 7646 |                              delta.x = -delta.x; | 
|---|
| 7594 | 7647 |                          } else | 
|---|
| .. | .. | 
|---|
| 7603 | 7656 |                      //System.out.println("DELTA1 = " + delta); | 
|---|
| 7604 | 7657 |                      LA.xformDir(delta, ClickInfo.matbuffer, delta); | 
|---|
| 7605 | 7658 |                      //System.out.println("DELTA2 = " + delta); | 
|---|
| 7606 |  | -                    LA.xformDir(delta, new Camera(info.camera.viewCode).fromScreen, delta);  | 
|---|
 | 7659 | +                    LA.xformDir(delta, new Camera(clickInfo.camera.viewCode).fromScreen, delta);  | 
|---|
| 7607 | 7660 |                      LA.matCopy(startMat, toParent); | 
|---|
| 7608 | 7661 |                      //System.out.println("DELTA3 = " + delta); | 
|---|
| 7609 | 7662 |                      LA.matTranslate(toParent, delta.x * scale, delta.y * scale, delta.z * scale); | 
|---|
| .. | .. | 
|---|
| 7613 | 7666 |                  break; | 
|---|
| 7614 | 7667 |   | 
|---|
| 7615 | 7668 |              case hitRotate: // rotate | 
|---|
| 7616 |  | -                int dx = info.x - centerPt.x;  | 
|---|
| 7617 |  | -                int dy = -(info.y - centerPt.y);  | 
|---|
 | 7669 | +                int dx = clickInfo.x - centerPt.x;  | 
|---|
 | 7670 | +                int dy = -(clickInfo.y - centerPt.y);  | 
|---|
| 7618 | 7671 |                  double angle = (double) Math.atan2(dx, dy); | 
|---|
| 7619 | 7672 |                  angle = -(1.570796 - angle); | 
|---|
| 7620 | 7673 |   | 
|---|
| .. | .. | 
|---|
| 7637 | 7690 |                  } | 
|---|
| 7638 | 7691 |                  /**/ | 
|---|
| 7639 | 7692 |   | 
|---|
| 7640 |  | -                switch (info.pane.RenderCamera().viewCode)  | 
|---|
 | 7693 | +                switch (clickInfo.pane.RenderCamera().viewCode)  | 
|---|
| 7641 | 7694 |                  { | 
|---|
| 7642 | 7695 |                      case 1: // '\001' | 
|---|
| 7643 | 7696 |                          LA.matZRotate(toParent, angle); | 
|---|
| .. | .. | 
|---|
| 7664 | 7717 |                  break; | 
|---|
| 7665 | 7718 |   | 
|---|
| 7666 | 7719 |              case hitScale: // scale | 
|---|
| 7667 |  | -                double hScale = (double) (info.x - centerPt.x) / 32;  | 
|---|
 | 7720 | +                double hScale = (double) (clickInfo.x /*- centerPt.x*/) / 32;  | 
|---|
| 7668 | 7721 |                  double sign = 1; | 
|---|
| 7669 | 7722 |                  if (hScale < 0) | 
|---|
| 7670 | 7723 |                  { | 
|---|
| .. | .. | 
|---|
| 7676 | 7729 |                      //hScale = 0.01; | 
|---|
| 7677 | 7730 |                  } | 
|---|
| 7678 | 7731 |                   | 
|---|
| 7679 |  | -                double vScale = (double) (info.y - centerPt.y) / 32;  | 
|---|
 | 7732 | +                double vScale = (double) (clickInfo.y /*- centerPt.y*/) / 32;  | 
|---|
| 7680 | 7733 |                  sign = 1; | 
|---|
| 7681 | 7734 |                  if (vScale < 0) | 
|---|
| 7682 | 7735 |                  { | 
|---|
| .. | .. | 
|---|
| 7687 | 7740 |                  { | 
|---|
| 7688 | 7741 |                      //vScale = 0.01; | 
|---|
| 7689 | 7742 |                  } | 
|---|
 | 7743 | +                  | 
|---|
| 7690 | 7744 |                  LA.matCopy(startMat, toParent); | 
|---|
| 7691 | 7745 |                  /**/ | 
|---|
| 7692 | 7746 |                  for (int i = 0; i < 3; i++) | 
|---|
| .. | .. | 
|---|
| 7696 | 7750 |                  } | 
|---|
| 7697 | 7751 |                  /**/ | 
|---|
| 7698 | 7752 |   | 
|---|
| 7699 |  | -                double totalScale = Math.sqrt(hScale*hScale + vScale*vScale) / Math.sqrt(2);  | 
|---|
 | 7753 | +                double totalScale = Math.sqrt(hScale*hScale + vScale*vScale) / clickInfo.scale;  | 
|---|
| 7700 | 7754 |                           | 
|---|
| 7701 | 7755 |                  if (totalScale < 0.01) | 
|---|
| 7702 | 7756 |                  { | 
|---|
| 7703 | 7757 |                      totalScale = 0.01; | 
|---|
| 7704 | 7758 |                  } | 
|---|
| 7705 | 7759 |                   | 
|---|
| 7706 |  | -                switch (info.pane.RenderCamera().viewCode)  | 
|---|
 | 7760 | +                switch (clickInfo.pane.RenderCamera().viewCode)  | 
|---|
| 7707 | 7761 |                  { | 
|---|
| 7708 | 7762 |                      case 3: // '\001' | 
|---|
| 7709 | 7763 |                          if (modified || opposite) | 
|---|
| .. | .. | 
|---|
| 7770 | 7824 |          } // NEW ... | 
|---|
| 7771 | 7825 |           | 
|---|
| 7772 | 7826 |           | 
|---|
| 7773 |  | -        info.pane.repaint();  | 
|---|
 | 7827 | +        clickInfo.pane.repaint();  | 
|---|
| 7774 | 7828 |      } | 
|---|
| 7775 | 7829 |   | 
|---|
| 7776 | 7830 |      boolean overflow = false; | 
|---|
 
| .. | .. | 
|---|
| 157 | 157 |              Point prev = new Point(0, 0); | 
|---|
| 158 | 158 |              Point curr = new Point(0, 0); | 
|---|
| 159 | 159 |              Rectangle dummy = new Rectangle(); | 
|---|
| 160 |  | -            calcHotSpot(sample, info, prev, dummy);  | 
|---|
 | 160 | +            calcHotSpot(sample, //info,  | 
|---|
 | 161 | +                    prev, dummy);  | 
|---|
| 161 | 162 |              for (double t = 0.1; t < 1.01; t += 0.1) | 
|---|
| 162 | 163 |              { | 
|---|
| 163 | 164 |                  solve(t, a, b, c, d, sample); | 
|---|
| 164 |  | -                calcHotSpot(sample, info, curr, dummy);  | 
|---|
 | 165 | +                calcHotSpot(sample, //info,  | 
|---|
 | 166 | +                        curr, dummy);  | 
|---|
| 165 | 167 |                  info.g.drawLine(prev.x, prev.y, curr.x, curr.y); | 
|---|
| 166 | 168 |                  info.g.drawLine(prev.x, prev.y + 1, curr.x, curr.y + 1); | 
|---|
| 167 | 169 |                  info.g.drawLine(prev.x + 1, prev.y, curr.x + 1, curr.y); | 
|---|
| .. | .. | 
|---|
| 181 | 183 |          for (int i=0; i < count; i++) | 
|---|
| 182 | 184 |          { | 
|---|
| 183 | 185 |              cVector p = (cVector)ctrlPnts.elementAt(i); | 
|---|
| 184 |  | -            Rectangle spot = calcHotSpot(p, info);  | 
|---|
 | 186 | +            Rectangle spot = calcHotSpot(p); //, info);  | 
|---|
| 185 | 187 |              info.g.fillRect(spot.x, spot.y, spot.width, spot.height); | 
|---|
| 186 | 188 |          } | 
|---|
| 187 | 189 |   | 
|---|
| .. | .. | 
|---|
| 197 | 199 |          for (int i=0; i < nPoints; i++) | 
|---|
| 198 | 200 |          { | 
|---|
| 199 | 201 |              cVector p = (cVector)ctrlPnts.elementAt(i); | 
|---|
| 200 |  | -            Rectangle r = calcHotSpot(p, info);  | 
|---|
 | 202 | +            Rectangle r = calcHotSpot(p); //, info);  | 
|---|
| 201 | 203 |              if (r.contains(info.x, info.y)) | 
|---|
| 202 | 204 |              { | 
|---|
| 203 | 205 |                  hitSomething = true; | 
|---|
| .. | .. | 
|---|
| 235 | 237 |              for (double t = 0; t < 1.001; t += 0.01) | 
|---|
| 236 | 238 |              { | 
|---|
| 237 | 239 |                  solve(t, a, b, c, d, sample); | 
|---|
| 238 |  | -                calcHotSpot(sample, info, pnt, rect);  | 
|---|
 | 240 | +                calcHotSpot(sample, //info,  | 
|---|
 | 241 | +                        pnt, rect);  | 
|---|
| 239 | 242 |                  if (!rect.contains(info.x, info.y)) | 
|---|
| 240 | 243 |                      continue; | 
|---|
| 241 | 244 |                  hitSomething = true; | 
|---|
 
| .. | .. | 
|---|
| 2 | 2 |   | 
|---|
| 3 | 3 |  class Torus extends Biparam implements java.io.Serializable | 
|---|
| 4 | 4 |  { | 
|---|
| 5 |  | -        //static final long serialVersionUID = -7637054329820073252L;  | 
|---|
 | 5 | +        static final long serialVersionUID = -7637054329820073252L; // Old  | 
|---|
| 6 | 6 |   | 
|---|
| 7 | 7 |      Torus() | 
|---|
| 8 | 8 |      { | 
|---|
| .. | .. | 
|---|
| 64 | 64 |              v = 0; | 
|---|
| 65 | 65 |           | 
|---|
| 66 | 66 |          double uAng = u * 2 * Math.PI; | 
|---|
| 67 |  | -        double vAng = v * 2 * Math.PI;  | 
|---|
 | 67 | +        double vAng = -v * 2 * Math.PI;  | 
|---|
| 68 | 68 |          double cosua = Math.cos(uAng); | 
|---|
| 69 | 69 |          double sinua = Math.sin(uAng); | 
|---|
| 70 | 70 |          double cosva = Math.cos(vAng); | 
|---|
| .. | .. | 
|---|
| 118 | 118 |          return rad2 <= minor * minor; | 
|---|
| 119 | 119 |      } | 
|---|
| 120 | 120 |   | 
|---|
| 121 |  | -    void drawEditHandles(ClickInfo info, int level)  | 
|---|
 | 121 | +    void drawEditHandles(//ClickInfo info,  | 
|---|
 | 122 | +            int level)  | 
|---|
| 122 | 123 |      { | 
|---|
| 123 | 124 |          if (level == 0) | 
|---|
| 124 | 125 |          { | 
|---|
| 125 | 126 |              return; | 
|---|
| 126 | 127 |          } else | 
|---|
| 127 | 128 |          { | 
|---|
| 128 |  | -            super.drawEditHandles(info, level);  | 
|---|
 | 129 | +            super.drawEditHandles(//info,  | 
|---|
 | 130 | +                    level);  | 
|---|
| 129 | 131 |              cVector temp = LA.newVector(0, 0, minor); | 
|---|
| 130 | 132 |              LA.xformPos(temp, toParent, temp); | 
|---|
| 131 |  | -            Rectangle majorSpot = calcHotSpot(temp, info);  | 
|---|
 | 133 | +            Rectangle majorSpot = calcHotSpot(temp); //, info);  | 
|---|
| 132 | 134 |              majorSpot.translate(4, 4); | 
|---|
| 133 | 135 |              temp.x = major; | 
|---|
| 134 | 136 |              temp.y = temp.z = 0; | 
|---|
| 135 | 137 |              LA.xformPos(temp, toParent, temp); | 
|---|
| 136 |  | -            Rectangle minorSpot = calcHotSpot(temp, info);  | 
|---|
 | 138 | +            Rectangle minorSpot = calcHotSpot(temp); //, info);  | 
|---|
| 137 | 139 |              minorSpot.translate(4, 4); | 
|---|
| 138 |  | -            info.g.setColor(Color.green);  | 
|---|
| 139 |  | -            info.g.fillRect(majorSpot.x, majorSpot.y, majorSpot.width, majorSpot.height);  | 
|---|
| 140 |  | -            info.g.fillRect(minorSpot.x, minorSpot.y, minorSpot.width, minorSpot.height);  | 
|---|
 | 140 | +            clickInfo.g.setColor(Color.green);  | 
|---|
 | 141 | +            clickInfo.g.fillRect(majorSpot.x, majorSpot.y, majorSpot.width, majorSpot.height);  | 
|---|
 | 142 | +            clickInfo.g.fillRect(minorSpot.x, minorSpot.y, minorSpot.width, minorSpot.height);  | 
|---|
| 141 | 143 |              return; | 
|---|
| 142 | 144 |          } | 
|---|
| 143 | 145 |      } | 
|---|
| 144 | 146 |   | 
|---|
| 145 |  | -    boolean doEditClick(ClickInfo info, int level)  | 
|---|
 | 147 | +    boolean doEditClick(//ClickInfo info,  | 
|---|
 | 148 | +            int level)  | 
|---|
| 146 | 149 |      { | 
|---|
| 147 | 150 |          if (level == 0) | 
|---|
| 148 | 151 |              return false; | 
|---|
| 149 | 152 |          hitSomething = 0; | 
|---|
| 150 |  | -        if (super.doEditClick(info, level))  | 
|---|
 | 153 | +        if (super.doEditClick(//info,  | 
|---|
 | 154 | +                level))  | 
|---|
| 151 | 155 |          { | 
|---|
| 152 | 156 |              hitSomething = 1; | 
|---|
| 153 | 157 |              return true; | 
|---|
| 154 | 158 |          } | 
|---|
| 155 | 159 |          cVector temp = LA.newVector(0, 0, minor); | 
|---|
| 156 | 160 |          LA.xformPos(temp, toParent, temp); | 
|---|
| 157 |  | -        Rectangle majorSpot = calcHotSpot(temp, info);  | 
|---|
 | 161 | +        Rectangle majorSpot = calcHotSpot(temp); //, info);  | 
|---|
| 158 | 162 |          majorSpot.translate(4, 4); | 
|---|
| 159 | 163 |          temp.x = major; | 
|---|
| 160 | 164 |          temp.y = temp.z = 0; | 
|---|
| 161 | 165 |          LA.xformPos(temp, toParent, temp); | 
|---|
| 162 |  | -        Rectangle minorSpot = calcHotSpot(temp, info);  | 
|---|
 | 166 | +        Rectangle minorSpot = calcHotSpot(temp); //, info);  | 
|---|
| 163 | 167 |          minorSpot.translate(4, 4); | 
|---|
| 164 |  | -        if (majorSpot.contains(info.x, info.y))  | 
|---|
 | 168 | +        if (majorSpot.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 165 | 169 |          { | 
|---|
| 166 | 170 |              hitSomething = 2; | 
|---|
| 167 | 171 |              startRad = major; | 
|---|
| 168 | 172 |          } else | 
|---|
| 169 |  | -        if (minorSpot.contains(info.x, info.y))  | 
|---|
 | 173 | +        if (minorSpot.contains(clickInfo.x, clickInfo.y))  | 
|---|
| 170 | 174 |          { | 
|---|
| 171 | 175 |              hitSomething = 3; | 
|---|
| 172 | 176 |              startRad = minor; | 
|---|
| .. | .. | 
|---|
| 174 | 178 |          { | 
|---|
| 175 | 179 |              return false; | 
|---|
| 176 | 180 |          } | 
|---|
| 177 |  | -        startX = info.x;  | 
|---|
 | 181 | +        startX = clickInfo.x;  | 
|---|
| 178 | 182 |          return true; | 
|---|
| 179 | 183 |      } | 
|---|
| 180 | 184 |   | 
|---|
| 181 |  | -    void doEditDrag(ClickInfo info, boolean opposite)  | 
|---|
 | 185 | +    void doEditDrag(//ClickInfo info,  | 
|---|
 | 186 | +            boolean opposite)  | 
|---|
| 182 | 187 |      { | 
|---|
| 183 | 188 |          if (hitSomething == 0) | 
|---|
| 184 | 189 |              return; | 
|---|
| 185 | 190 |          if (hitSomething == 1) | 
|---|
| 186 | 191 |          { | 
|---|
| 187 |  | -            super.doEditDrag(info, opposite);  | 
|---|
 | 192 | +            super.doEditDrag(//info,  | 
|---|
 | 193 | +                    opposite);  | 
|---|
| 188 | 194 |              return; | 
|---|
| 189 | 195 |          } | 
|---|
| 190 |  | -        double deltaR = info.x - startX;  | 
|---|
 | 196 | +        double deltaR = clickInfo.x - startX;  | 
|---|
| 191 | 197 |          //cVector delta = LA.newVector(info.x - startX, 0, 0); | 
|---|
| 192 | 198 |          //LA.xformDir(delta, info.camera.fromScreen, delta); | 
|---|
| 193 |  | -		deltaR /= 100 * info.camera.SCALE / info.camera.Distance();  | 
|---|
 | 199 | +		deltaR /= 100 * clickInfo.camera.SCALE / clickInfo.camera.Distance();  | 
|---|
| 194 | 200 |          double newRad = startRad + deltaR; | 
|---|
| 195 | 201 |          if (newRad < 0) | 
|---|
| 196 | 202 |              newRad = 0; | 
|---|
| .. | .. | 
|---|
| 199 | 205 |          else | 
|---|
| 200 | 206 |              minor = newRad; | 
|---|
| 201 | 207 |          recalculate(); | 
|---|
| 202 |  | -        info.pane.repaint();  | 
|---|
 | 208 | +        clickInfo.pane.repaint();  | 
|---|
| 203 | 209 |      } | 
|---|
| 204 | 210 |   | 
|---|
| 205 | 211 |      double major; | 
|---|