зеркало из https://github.com/mozilla/pjs.git
176 строки
4.7 KiB
Diff
176 строки
4.7 KiB
Diff
|
*** Develop:Source331 Build Environment:CW Pro 2:Metrowerks CodeWarrior:MacOS Support:PowerPlant:_In Progress:_Table Classes:LDropFlag.cp Mon Mar 16 17:12:01 1998
|
|||
|
--- Source:LDropFlag.cp Mon Mar 16 17:12:07 1998
|
|||
|
***************
|
|||
|
*** 1,6 ****
|
|||
|
--- 1,7 ----
|
|||
|
// ===========================================================================
|
|||
|
// LDropFlag.cp <20>1995-1996 Metrowerks Inc. All rights reserved.
|
|||
|
// ===========================================================================
|
|||
|
+ //<2F><><EFBFBD>NETSCAPE - draw over bg colors other than white (ie, preserve bg color)
|
|||
|
//
|
|||
|
// Draws and tracks clicks for a drop flag.
|
|||
|
|
|||
|
***************
|
|||
|
*** 9,20 ****
|
|||
|
--- 10,26 ----
|
|||
|
#endif
|
|||
|
|
|||
|
#include <LDropFlag.h>
|
|||
|
+ #include <UGWorld.h>
|
|||
|
|
|||
|
#ifndef __ICONS__
|
|||
|
#include <Icons.h>
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
+ //<2F><><EFBFBD>NETSCAPE
|
|||
|
+ static void PlotIconOffscreen ( const Rect & inRect, ResIDT inIconID ) ;
|
|||
|
+
|
|||
|
+
|
|||
|
// Icon family resource ID's for the states of the drop flag
|
|||
|
// The size of the rectangle you pass to Draw and TrackClick determine
|
|||
|
// which icon size gets used.
|
|||
|
***************
|
|||
|
*** 47,53 ****
|
|||
|
iconID = icon_Down;
|
|||
|
}
|
|||
|
|
|||
|
! ::PlotIconID(&inRect, atNone, ttNone, iconID);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
--- 53,60 ----
|
|||
|
iconID = icon_Down;
|
|||
|
}
|
|||
|
|
|||
|
! //<2F><><EFBFBD>NETSCAPE - call PlotIconOffscreen() instead of PlotIconID()
|
|||
|
! PlotIconOffscreen ( inRect, iconID );
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
***************
|
|||
|
*** 64,70 ****
|
|||
|
// inIsUp specifies if the flag was up or down when the click started
|
|||
|
//
|
|||
|
// Returns whether the mouse was release inside the DropFlag.
|
|||
|
!
|
|||
|
Boolean
|
|||
|
LDropFlag::TrackClick(
|
|||
|
const Rect &inRect,
|
|||
|
--- 71,78 ----
|
|||
|
// inIsUp specifies if the flag was up or down when the click started
|
|||
|
//
|
|||
|
// Returns whether the mouse was release inside the DropFlag.
|
|||
|
! //
|
|||
|
! //<2F><><EFBFBD>NETSCAPE - call PlotIconOffscreen() instead of PlotIconID()
|
|||
|
Boolean
|
|||
|
LDropFlag::TrackClick(
|
|||
|
const Rect &inRect,
|
|||
|
***************
|
|||
|
*** 87,93 ****
|
|||
|
// when it was previously outside
|
|||
|
Boolean currInside = true;
|
|||
|
Boolean prevInside = false;
|
|||
|
! ::PlotIconID(&inRect, atNone, ttNone, iconID + 1);
|
|||
|
|
|||
|
// Track the mouse while it is down
|
|||
|
Point currPt = inMouse;
|
|||
|
--- 95,101 ----
|
|||
|
// when it was previously outside
|
|||
|
Boolean currInside = true;
|
|||
|
Boolean prevInside = false;
|
|||
|
! PlotIconOffscreen(inRect, iconID + 1);
|
|||
|
|
|||
|
// Track the mouse while it is down
|
|||
|
Point currPt = inMouse;
|
|||
|
***************
|
|||
|
*** 101,107 ****
|
|||
|
if (currInside) {
|
|||
|
trackIconID = iconID + 1;
|
|||
|
}
|
|||
|
! ::PlotIconID(&inRect, atNone, ttNone, trackIconID);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
--- 109,115 ----
|
|||
|
if (currInside) {
|
|||
|
trackIconID = iconID + 1;
|
|||
|
}
|
|||
|
! PlotIconOffscreen(inRect, trackIconID);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
***************
|
|||
|
*** 116,122 ****
|
|||
|
if (goodClick) {
|
|||
|
UInt32 ticks; // Draw intermediate state
|
|||
|
::Delay(delay_Animation, &ticks);
|
|||
|
! ::PlotIconID(&inRect, atNone, ttNone, icon_Side);
|
|||
|
::Delay(delay_Animation, &ticks);
|
|||
|
|
|||
|
// Draw dark end state
|
|||
|
--- 124,130 ----
|
|||
|
if (goodClick) {
|
|||
|
UInt32 ticks; // Draw intermediate state
|
|||
|
::Delay(delay_Animation, &ticks);
|
|||
|
! PlotIconOffscreen(inRect, icon_Side);
|
|||
|
::Delay(delay_Animation, &ticks);
|
|||
|
|
|||
|
// Draw dark end state
|
|||
|
***************
|
|||
|
*** 124,137 ****
|
|||
|
if (inIsDown) {
|
|||
|
endIconID = icon_Up + 1;
|
|||
|
}
|
|||
|
! ::PlotIconID(&inRect, atNone, ttNone, endIconID);
|
|||
|
::Delay(delay_Animation, &ticks);
|
|||
|
// Draw normal end state
|
|||
|
! ::PlotIconID(&inRect, atNone, ttNone, endIconID - 1);
|
|||
|
|
|||
|
} else { // Draw original state
|
|||
|
! ::PlotIconID(&inRect, atNone, ttNone, iconID);
|
|||
|
}
|
|||
|
|
|||
|
return goodClick;
|
|||
|
}
|
|||
|
--- 132,170 ----
|
|||
|
if (inIsDown) {
|
|||
|
endIconID = icon_Up + 1;
|
|||
|
}
|
|||
|
! PlotIconOffscreen(inRect, endIconID);
|
|||
|
::Delay(delay_Animation, &ticks);
|
|||
|
// Draw normal end state
|
|||
|
! PlotIconOffscreen(inRect, endIconID - 1);
|
|||
|
|
|||
|
} else { // Draw original state
|
|||
|
! PlotIconOffscreen(inRect, iconID);
|
|||
|
}
|
|||
|
|
|||
|
return goodClick;
|
|||
|
+ }
|
|||
|
+
|
|||
|
+
|
|||
|
+ //<2F><><EFBFBD> NETSCAPE
|
|||
|
+ // this code is mainly from LGADisclosureTriangle.cp
|
|||
|
+ static void PlotIconOffscreen ( const Rect & inRect, ResIDT inIconID )
|
|||
|
+ {
|
|||
|
+ // <20> In order to make the transitions between the various states
|
|||
|
+ // smoother we are going to attempt to figure out what the background
|
|||
|
+ // color is behind the triangle, by using the current clipping region
|
|||
|
+ // we will subzequently use this color to wipe the background
|
|||
|
+ Rect destRect;
|
|||
|
+ RgnHandle currClip = ::NewRgn ();
|
|||
|
+ ::GetClip ( currClip );
|
|||
|
+ Rect clipRect = (**currClip).rgnBBox;
|
|||
|
+ ::DisposeRgn ( currClip );
|
|||
|
+ ::SectRect ( &inRect, &clipRect, &destRect );
|
|||
|
+
|
|||
|
+ RGBColor backColor;
|
|||
|
+ ::GetCPixel ( destRect.right - 1, destRect.top, &backColor );
|
|||
|
+ StOffscreenGWorld world(inRect);
|
|||
|
+ ::RGBBackColor ( &backColor );
|
|||
|
+ ::EraseRect ( &inRect );
|
|||
|
+
|
|||
|
+ ::PlotIconID(&inRect, atNone, ttNone, inIconID);
|
|||
|
}
|