home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_progs
/
prog_c
/
dotty.lzh
/
DOTTY
/
DOTTY.C
< prev
Wrap
C/C++ Source or Header
|
1991-10-31
|
5KB
|
172 lines
/*
* Article 2308 of net.sources:
* ion: version B 2.10.2 9/17/84 chuqui version 1.9 3/12/85; site unisoft.UUCP
* Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site amiga.amiga.UUCP
* Path: unisoft!dual!vecpyr!lll-lcc!lll-crg!seismo!harvard!bbnccv!bbncca!wanginst!decvax!decwrl!pyramid!amiga!dale
* From: dale@amiga.UUCP (Dale Luck)
* Newsgroups: net.sources
* Subject: source to amiga dot graphics demo
* Message-ID: <137@amiga.amiga.UUCP>
* Date: 25 Oct 85 01:27:11 GMT
* Date-Received: 30 Oct 85 05:04:57 GMT
* References: <1359@ihlpg.UUCP>
* Reply-To: dale@tooter.UUCP (Dale Luck)
* Distribution: net
* Organization: Commodore-Amiga Inc., 983 University Ave #D, Los Gatos CA 95030
* Lines: 151
*
* For those that are interested, here is a sample program that uses the
* window libraries and message stuff on the amiga. If there is going to be
* significant quantities of shared amiga source maybe we should have an
* net.sources.amiga
* Happy Hacking
* Dale
*
*/
#include <exec/types.h>
#include <exec/nodes.h>
#include <exec/lists.h>
#include <exec/ports.h>
#include <graphics/gfx.h>
#include <graphics/clip.h>
#include <graphics/view.h>
#include <graphics/rastport.h>
#include <graphics/layers.h>
#include <intuition/intuition.h>
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
#define DEPTH 2
#define WIDTH 100
#define HEIGHT 50
int waiting_for_message = FALSE;
char dotty[] = "Dotty Window";
int usable_width(w)
struct Window *w;
{
return (w->Width - w->BorderLeft - w->BorderRight);
}
int usable_height(w)
struct Window *w;
{
return(w->Height - w->BorderTop - w->BorderBottom);
}
main()
{
struct RastPort *rp;
struct Window *window;
struct NewWindow nw;
int x,y,c;
int xoffset,yoffset;
int width,height;
struct IntuiMessage *message;
ULONG MessageClass;
if (!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",1)))
{
printf("no graphics library!!!\n");
exit(1);
}
if (!(IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library",1)) )
{
CloseLibrary(GfxBase);
printf("no intuition here!!\n");
exit(1);
}
nw.LeftEdge = 50;
nw.TopEdge = 50;
nw.Width = WIDTH;
nw.Height = HEIGHT;
nw.DetailPen = -1;
nw.BlockPen = -1;
nw.IDCMPFlags = CLOSEWINDOW
| REFRESHWINDOW
| SIZEVERIFY
| NEWSIZE;
nw.Flags = WINDOWDEPTH
| WINDOWSIZING
| WINDOWDRAG
| WINDOWCLOSE
| SIMPLE_REFRESH;
nw.FirstGadget = NULL;
nw.CheckMark = NULL;
nw.Title = dotty;
nw.Screen = NULL;
nw.BitMap = NULL;
nw.MinHeight = 10;
nw.MinWidth = 10;
nw.MaxHeight = 200;
nw.MaxWidth = 640;
nw.Type = WBENCHSCREEN;
if (!(window = (struct Window *)OpenWindow(&nw) ))
{
printf("could not open the window\n");
CloseLibrary(IntuitionBase);
CloseLibrary(GfxBase);
exit(2);
}
width = usable_width(window);
height = usable_height(window);
rp = window->RPort;
xoffset = window->BorderLeft;
yoffset = window->BorderTop;
while (TRUE) /* do this forever, or until user gets bored */
{
while (!(message = (struct IntuiMessage *)GetMsg(window->UserPort)) )
{
if (waiting_for_message) Wait(1<<window->UserPort->mp_SigBit);
else
{
x = RangeRand(width);
y = RangeRand(height);
c = RangeRand(32);
SetAPen(rp,c);
WritePixel(rp,xoffset+x,yoffset+y);
}
}
MessageClass = message->Class;
ReplyMsg(message);
switch (MessageClass)
{
case CLOSEWINDOW : CloseWindow(window);
CloseLibrary(IntuitionBase);
CloseLibrary(GfxBase);
exit(0);
case SIZEVERIFY : waiting_for_message = TRUE;
break;
case REFRESHWINDOW: BeginRefresh(window);
SetAPen(rp,0);
/* should not have to recalculate these */
width = usable_width(window);
height = usable_height(window);
RectFill(rp,xoffset,yoffset,
xoffset+width-1,yoffset+height-1);
EndRefresh(window,TRUE);
break;
case NEWSIZE : waiting_for_message = FALSE;
width = usable_width(window);
height = usable_height(window);
break;
}
}
}