From: Richard K. <ric...@us...> - 2005-05-23 11:10:27
|
Update of /cvsroot/actionstep/actionstep/src/org/actionstep In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15375 Modified Files: NSControl.as NSRect.as NSScroller.as Log Message: got scroll buttons working and the scroll knobs rendering Index: NSRect.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/NSRect.as,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** NSRect.as 21 May 2005 04:23:43 -0000 1.5 --- NSRect.as 23 May 2005 11:10:12 -0000 1.6 *************** *** 57,60 **** --- 57,67 ---- } + public function equalTo(other:NSRect):Boolean { + return origin.x == other.origin.x && + origin.y == other.origin.y && + size.width == other.size.width && + size.height == other.size.height; + } + public function midX():Number { return origin.x + size.width/2; Index: NSControl.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/NSControl.as,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** NSControl.as 18 May 2005 22:06:55 -0000 1.9 --- NSControl.as 23 May 2005 11:10:12 -0000 1.10 *************** *** 424,427 **** --- 424,431 ---- private var m_trackingData; + private function cellTrackingRect():NSRect { + return m_bounds; + } + public function mouseDown(event:NSEvent) { if (!isEnabled()) { *************** *** 441,445 **** mouseUp: false, complete: false, ! bounds: m_bounds }; mouseTrackingCallback(event); --- 445,449 ---- mouseUp: false, complete: false, ! bounds: cellTrackingRect() }; mouseTrackingCallback(event); Index: NSScroller.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/NSScroller.as,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** NSScroller.as 22 May 2005 03:35:37 -0000 1.3 --- NSScroller.as 23 May 2005 11:10:12 -0000 1.4 *************** *** 68,73 **** private var m_action:String; private var m_enabled:Boolean; ! private var m_horizontal:Boolean; public function NSScroller() { --- 68,75 ---- private var m_action:String; private var m_enabled:Boolean; ! private var m_cellTrackingRect:NSRect; private var m_horizontal:Boolean; + private var m_scrollerKnobClip:MovieClip; + private var m_scrollerKnobClipRect:NSRect; public function NSScroller() { *************** *** 102,105 **** --- 104,108 ---- m_floatValue = 1.0; } + m_knobProportion = .5; m_hitPart = NSScrollerPart.NSScrollerNoPart; drawParts(); *************** *** 267,270 **** --- 270,275 ---- height = knobHeight; width = BUTTON_WIDTH; + x += 1; + y += 1; break; case NSScrollerPart.NSScrollerKnobSlot: *************** *** 391,395 **** g_upCell.setContinuous(true); g_upCell.sendActionOn(NSEvent.NSLeftMouseDownMask | NSEvent.NSPeriodicMask); ! g_upCell.setPeriodicDelayInterval(.3, .03); g_upCell.setBezelStyle(NSBezelStyle.NSShadowlessSquareBezelStyle); g_upCell.setBezeled(true); --- 396,400 ---- g_upCell.setContinuous(true); g_upCell.sendActionOn(NSEvent.NSLeftMouseDownMask | NSEvent.NSPeriodicMask); ! g_upCell.setPeriodicDelayInterval(1, .03); g_upCell.setBezelStyle(NSBezelStyle.NSShadowlessSquareBezelStyle); g_upCell.setBezeled(true); *************** *** 402,406 **** g_downCell.setContinuous(true); g_downCell.sendActionOn(NSEvent.NSLeftMouseDownMask | NSEvent.NSPeriodicMask); ! g_downCell.setPeriodicDelayInterval(.3, .03); g_downCell.setBezelStyle(NSBezelStyle.NSShadowlessSquareBezelStyle); g_downCell.setBezeled(true); --- 407,411 ---- g_downCell.setContinuous(true); g_downCell.sendActionOn(NSEvent.NSLeftMouseDownMask | NSEvent.NSPeriodicMask); ! g_downCell.setPeriodicDelayInterval(1, .03); g_downCell.setBezelStyle(NSBezelStyle.NSShadowlessSquareBezelStyle); g_downCell.setBezeled(true); *************** *** 413,417 **** g_leftCell.setContinuous(true); g_leftCell.sendActionOn(NSEvent.NSLeftMouseDownMask | NSEvent.NSPeriodicMask); ! g_leftCell.setPeriodicDelayInterval(.3, .03); g_leftCell.setBezelStyle(NSBezelStyle.NSShadowlessSquareBezelStyle); g_leftCell.setBezeled(true); --- 418,422 ---- g_leftCell.setContinuous(true); g_leftCell.sendActionOn(NSEvent.NSLeftMouseDownMask | NSEvent.NSPeriodicMask); ! g_leftCell.setPeriodicDelayInterval(1, .03); g_leftCell.setBezelStyle(NSBezelStyle.NSShadowlessSquareBezelStyle); g_leftCell.setBezeled(true); *************** *** 424,428 **** g_rightCell.setContinuous(true); g_rightCell.sendActionOn(NSEvent.NSLeftMouseDownMask | NSEvent.NSPeriodicMask); ! g_rightCell.setPeriodicDelayInterval(.3, .03); g_rightCell.setBezelStyle(NSBezelStyle.NSShadowlessSquareBezelStyle); g_rightCell.setBezeled(true); --- 429,433 ---- g_rightCell.setContinuous(true); g_rightCell.sendActionOn(NSEvent.NSLeftMouseDownMask | NSEvent.NSPeriodicMask); ! g_rightCell.setPeriodicDelayInterval(1, .03); g_rightCell.setBezelStyle(NSBezelStyle.NSShadowlessSquareBezelStyle); g_rightCell.setBezeled(true); *************** *** 459,489 **** } - private function floatValueAtPoint(point:NSPoint):Number { - var knobRect:NSRect = rectForPart(NSScrollerPart.NSScrollerKnob); - var slotRect:NSRect = rectForPart(NSScrollerPart.NSScrollerKnobSlot); - var position:Number; - var min_pos:Number; - var max_pos:Number; - - if (m_horizontal) { - min_pos = slotRect.minX() + knobRect.size.width/2 - min_pos = slotRect.maxX() + knobRect.size.width/2 - position = point.x; - } else { - min_pos = slotRect.minY() + knobRect.size.height/2 - min_pos = slotRect.maxY() + knobRect.size.height/2 - position = point.y; - } - if (position <= min_pos) { - return 0; - } - if (position >= max_pos) { - return 1; - } - return (position - min_pos) / (max_pos - min_pos); - } - public function mouseDown(event:NSEvent) { ! var location:NSPoint = event.locationInWindow; m_hitPart = testPart(location); setButtonCellTargets(); --- 464,469 ---- } public function mouseDown(event:NSEvent) { ! var location:NSPoint = event.mouseLocation; m_hitPart = testPart(location); setButtonCellTargets(); *************** *** 491,498 **** case NSScrollerPart.NSScrollerIncrementPage: case NSScrollerPart.NSScrollerIncrementLine: case NSScrollerPart.NSScrollerDecrementPage: case NSScrollerPart.NSScrollerDecrementLine: ! trackScrollButtons(event); ! break; case NSScrollerPart.NSScrollerKnob: trackKnob(event); --- 471,484 ---- case NSScrollerPart.NSScrollerIncrementPage: case NSScrollerPart.NSScrollerIncrementLine: + m_cell = m_horizontal ? g_rightCell : g_downCell; + m_cellTrackingRect = rectForPart(NSScrollerPart.NSScrollerIncrementLine); + super.mouseDown(event); + return; case NSScrollerPart.NSScrollerDecrementPage: case NSScrollerPart.NSScrollerDecrementLine: ! m_cell = m_horizontal ? g_leftCell : g_upCell; ! m_cellTrackingRect = rectForPart(NSScrollerPart.NSScrollerDecrementLine); ! super.mouseDown(event); ! return; case NSScrollerPart.NSScrollerKnob: trackKnob(event); *************** *** 516,535 **** } } ! private function trackKnob(event:NSEvent) { } - private function trackScrollButtons(event) { - } - public function drawRect(rect:NSRect) { ASDraw.outlineRectWithRect(m_mcBounds, rect, [0x696E79,0xF6F8F9]); var rectIncrementLine:NSRect = rectForPart(NSScrollerPart.NSScrollerIncrementLine); var rectDecrementLine:NSRect = rectForPart(NSScrollerPart.NSScrollerDecrementLine); ! var rectKnobSlot:NSRect = rectForPart(NSScrollerPart.NSScrollerKnobSlot); ! var cell:NSButtonCell = (m_horizontal ? g_leftCell : g_upCell); ! cell.drawWithFrameInView(rectDecrementLine, this); ! cell = (m_horizontal ? g_rightCell : g_downCell); ! cell.drawWithFrameInView(rectIncrementLine, this); } --- 502,529 ---- } } ! private function trackKnob(event:NSEvent) { } public function drawRect(rect:NSRect) { + if (m_scrollerKnobClip == null) { + m_scrollerKnobClip = createSubviewMovieClip(); + } + var rectKnob:NSRect = rectForPart(NSScrollerPart.NSScrollerKnob); + if (m_scrollerKnobClipRect == null || !m_scrollerKnobClipRect.equalTo(rectKnob)) { + m_scrollerKnobClipRect = rectKnob; + m_scrollerKnobClip._x = rectKnob.origin.x; + m_scrollerKnobClip._y = rectKnob.origin.y; + ASDraw.outlineRectWithRect(m_scrollerKnobClip, + new NSRect(0,0,rectKnob.size.width, rectKnob.size.height), + [0xF6F8F9, 0x696E79]); + m_scrollerKnobClipRect = rectKnob; + } + ASDraw.outlineRectWithRect(m_mcBounds, rect, [0x696E79,0xF6F8F9]); var rectIncrementLine:NSRect = rectForPart(NSScrollerPart.NSScrollerIncrementLine); var rectDecrementLine:NSRect = rectForPart(NSScrollerPart.NSScrollerDecrementLine); ! (m_horizontal ? g_leftCell : g_upCell).drawWithFrameInView(rectDecrementLine, this); ! (m_horizontal ? g_rightCell : g_downCell).drawWithFrameInView(rectIncrementLine, this); } *************** *** 545,548 **** --- 539,546 ---- // PRIVATE FUNCTIONS + + private function cellTrackingRect():NSRect { + return m_cellTrackingRect; + } private function setButtonCellTargets() { *************** *** 556,559 **** --- 554,582 ---- g_rightCell.setAction(m_action); } + + private function floatValueAtPoint(point:NSPoint):Number { + var knobRect:NSRect = rectForPart(NSScrollerPart.NSScrollerKnob); + var slotRect:NSRect = rectForPart(NSScrollerPart.NSScrollerKnobSlot); + var position:Number; + var min_pos:Number; + var max_pos:Number; + + if (m_horizontal) { + min_pos = slotRect.minX() + knobRect.size.width/2 + min_pos = slotRect.maxX() + knobRect.size.width/2 + position = point.x; + } else { + min_pos = slotRect.minY() + knobRect.size.height/2 + min_pos = slotRect.maxY() + knobRect.size.height/2 + position = point.y; + } + if (position <= min_pos) { + return 0; + } + if (position >= max_pos) { + return 1; + } + return (position - min_pos) / (max_pos - min_pos); + } } \ No newline at end of file |