home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
oct93
/
graphics
/
graphtal.lha
/
Graphtal
/
LineDevice.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-11-17
|
2KB
|
93 lines
/*
* LineDevice.C - simple line device driver.
*
* Copyright (C) 1992, Christoph Streit (streit@iam.unibe.ch)
* University of Berne, Switzerland
* All rights reserved.
*
* This software may be freely copied, modified, and redistributed
* provided that this copyright notice is preserved on all copies.
*
* You may not distribute this software, in whole or in part, as part of
* any commercial product without the express consent of the authors.
*
* There is no warranty or other guarantee of fitness of this software
* for any purpose. It is provided solely "as is".
*
*/
#include "LineDevice.h"
#include "Polygon.h"
//___________________________________________________________ LineDevice
LineDevice::LineDevice(BaseWindow* window, Options* options)
: DeviceDriver(options), w(window)
{}
LineDevice::~LineDevice()
{
delete w;
}
void LineDevice::begin()
{
if (!theOptions->autoscale) {
w->disableBuffering();
w->setView(theOptions->eye, theOptions->lookat, theOptions->up,
theOptions->fov);
}
w->open(theOptions->resX, theOptions->resY, "L-System " + LSystemName);
if (theOptions->autoscale)
w->writeText("Please wait ...",
theOptions->resX/2-40, theOptions->resY/2-5);
}
void LineDevice::end(const BoundingBox& b)
{
char key;
if (theOptions->verbose)
cerr << "primitives: "<< primitives << '\n';
if (theOptions->autoscale) {
w->setView(b, theOptions->up, theOptions->fov);
w->clear();
}
w->flush();
do {
key = w->waitForKey();
} while(key != 'q' && key != 'Q');
w->close();
}
void LineDevice::cylinder(const Vector& p1, const Vector& p2, real)
{
if (definingMacro)
return;
primitives++;
w->line(p1, p2);
}
void LineDevice::cone(const Vector& p1, real, const Vector& p2, real)
{
if (definingMacro)
return;
primitives++;
w->line(p1, p2);
}
void LineDevice::polygon(Polygon* p)
{
if (definingMacro)
return;
primitives++;
w->polygon(p);
}
void LineDevice::sphere(const Vector&, real){}