public int DoResizeStep(int currentVal) { switch (rsStage) { case ResizeStage.Sleeping: return(currentVal); // do nothing case ResizeStage.Accelerating: if (rsMaximizing) { rsSpeed++; } else { rsSpeed--; } if ((rsMaximizing && currentVal > rsTarget) || (!rsMaximizing && currentVal < rsTarget)) { rsStage++; } return(currentVal + rsSpeed); case ResizeStage.Breaking: rsSpeed /= 2; if (rsSpeed <= 10) { rsStage++; } return(currentVal + rsSpeed); case ResizeStage.Reversing: if (rsMaximizing) { rsSpeed--; } else { rsSpeed++; } if ((rsMaximizing && currentVal + rsSpeed < rsTarget) || (!rsMaximizing && currentVal + rsSpeed > rsTarget)) { rsStage = ResizeStage.Sleeping; return(rsTarget); } return(currentVal + rsSpeed); } return(currentVal); }
public void Set(int current, int target) { if (current == target) { rsStage = ResizeStage.Sleeping; return; } rsTarget = target; rsSpeed = 0; rsMaximizing = current < rsTarget; if (rsMaximizing) { rsOverlap = rsTarget + ((rsTarget - current) / 3); } else { rsOverlap = rsTarget - ((current - rsTarget) / 3); } rsStage = ResizeStage.Accelerating; }
public ResizeTool() { rsStage = ResizeStage.Sleeping; }