mirror of
https://github.com/softdorothy/GliderPRO.git
synced 2024-06-08 06:29:28 +00:00
1 line
12 KiB
C
1 line
12 KiB
C
|
//============================================================================
//----------------------------------------------------------------------------
// Marquee.c
//----------------------------------------------------------------------------
//============================================================================
#include "Externs.h"
#include "Marquee.h"
#include "Objects.h"
#include "ObjectEdit.h"
#include "RectUtils.h"
#define kMarqueePatListID 128
#define kHandleSideLong 9
void DrawGliderMarquee (void);
void DrawMarquee (void);
marquee theMarquee;
Rect marqueeGliderRect;
Boolean gliderMarqueeUp;
extern Cursor handCursor, vertCursor, horiCursor, diagCursor;
extern Rect leftStartGliderSrc;
//============================================================== Functions
//-------------------------------------------------------------- DoMarquee
void DoMarquee (void)
{
if ((!theMarquee.active) || (theMarquee.paused))
return;
SetPortWindowPort(mainWindow);
PenMode(patXor);
PenPat(&theMarquee.pats[theMarquee.index]);
DrawMarquee();
theMarquee.index++;
if (theMarquee.index >= kNumMarqueePats)
theMarquee.index = 0;
PenPat(&theMarquee.pats[theMarquee.index]);
DrawMarquee();
PenNormal();
}
//-------------------------------------------------------------- StartMarquee
void StartMarquee (Rect *theRect)
{
if (theMarquee.active)
StopMarquee();
if (objActive == kNoObjectSelected)
return;
SetPortWindowPort(mainWindow);
theMarquee.bounds = *theRect;
theMarquee.active = true;
theMarquee.paused = false;
theMarquee.handled = false;
PenMode(patXor);
PenPat(&theMarquee.pats[theMarquee.index]);
DrawMarquee();
PenNormal();
SetCoordinateHVD(theMarquee.bounds.left, theMarquee.bounds.top, -1);
}
//-------------------------------------------------------------- StartMarqueeHandled
void StartMarqueeHandled (Rect *theRect, short direction, short dist)
{
if (theMarquee.active)
StopMarquee();
if (objActive == kNoObjectSelected)
return;
SetPortWindowPort(mainWindow);
theMarquee.bounds = *theRect;
theMarquee.active = true;
theMarquee.paused = false;
theMarquee.handled = true;
QSetRect(&theMarquee.handle, 0, 0, kHandleSideLong, kHandleSideLong);
QOffsetRect(&theMarquee.handle, kHandleSideLong / -2, kHandleSideLong / -2);
switch (direction)
{
case kAbove:
QOffsetRect(&theMarquee.handle, theMarquee.bounds.left,
theMarquee.bounds.top);
QOffsetRect(&theMarquee.handle, HalfRectWide(&theMarquee.bounds), -dist);
break;
case kToRight:
QOffsetRect(&theMarquee.handle, theMarquee.bounds.right,
theMarquee.bounds.top);
QOffsetRect(&theMarquee.handle, dist, HalfRectTall(&theMarquee.bounds));
break;
case kBelow:
QOffsetRect(&theMarquee.handle, theMarquee.bounds.left,
theMarquee.bounds.bottom);
QOffsetRect(&theMarquee.handle, HalfRectWide(&theMarquee.bounds), dist);
break;
case kToLeft:
QOffsetRect(&theMarquee.handle, theMarquee.bounds.left,
theMarquee.bounds.top);
QOffsetRect(&theMarquee.handle, -dist, HalfRectTall(&theMarquee.bounds));
break;
case kBottomCorner:
QOffsetRect(&theMarquee.handle, theMarquee.bounds.right,
theMarquee.bounds.bottom);
break;
case kTopCorner:
QOffsetRect(&theMarquee.handle, theMarquee.bounds.right,
theMarquee.bounds.top);
break;
}
theMarquee.direction = direction;
theMarquee.dist = dist;
PenMode(patXor);
PenPat(&theMarquee.pats[theMarquee.index]);
DrawMarquee();
PenNormal();
SetCoordinateHVD(theMarquee.bounds.left, theMarquee.bounds.top, dist);
}
//-------------------------------------------------------------- StopMarquee
void StopMarquee (void)
{
if (gliderMarqueeUp)
{
DrawGliderMarquee();
gliderMarqueeUp = false;
}
if (!theMarquee.active)
return;
SetPortWindowPort(mainWindow);
PenMode(patXor);
PenPat(&theMarquee.pats[theMarquee.index]);
DrawMarquee();
PenNormal();
theMarquee.active = false;
SetCoordinateHVD(-1, -1, -1);
}
//-------------------------------------------------------------- PauseMarquee
void PauseMarquee (
|