/*
* File: platform.h
* ----------------
* This file defines the Platform class, which encapsulates
* the platform-specific parts of the StanfordCPPLib package. This file is
* logically part of the implementation and is not interesting to clients.
*/
#ifndef _platform_h
#define _platform_h
#include
#include
#include "gevents.h"
#include "gwindow.h"
#include "sound.h"
class Platform {
private:
Platform();
friend Platform *getPlatform();
public:
virtual ~Platform();
void clearConsole();
void setConsoleFont(const std::string & font);
void setConsoleSize(double width, double height);
bool fileExists(std::string filename);
bool isFile(std::string filename);
bool isSymbolicLink(std::string filename);
bool isDirectory(std::string filename);
void setCurrentDirectory(std::string path);
std::string getCurrentDirectory();
void createDirectory(std::string path);
std::string getDirectoryPathSeparator();
std::string getSearchPathSeparator();
std::string expandPathname(std::string filename);
void listDirectory(std::string path, vector & list);
std::string openFileDialog(std::string title, std::string mode,
std::string path);
void createGWindow(const GWindow & gw, double width, double height,
GObject *topCompound);
void deleteGWindow(const GWindow & gw);
void close(const GWindow & gw);
void requestFocus(const GWindow & gw);
void clear(const GWindow & gw);
void repaint(const GWindow & gw);
void setVisible(const GWindow & gw, bool flag);
void setResizable(const GWindow & gw, bool flag);
void setWindowTitle(const GWindow & gw, std::string title);
void setRegionAlignment(const GWindow & gw, std::string region,
std::string align);
void addToRegion(const GWindow & gw, GObject *gobj, std::string region);
void removeFromRegion(const GWindow & gw, GObject *gobj,
std::string region);
void pause(double milliseconds);
double getScreenWidth();
double getScreenHeight();
GEvent waitForEvent(int mask);
GEvent getNextEvent(int mask);
void exitGraphics();
void createTimer(const GTimer & timer, double delay);
void deleteTimer(const GTimer & timer);
void startTimer(const GTimer & timer);
void stopTimer(const GTimer & timer);
void createSound(Sound *sound, std::string filename);
void deleteSound(Sound *sound);
void playSound(Sound *sound);
void createGRect(GObject *gobj, double width, double height);
void createGRoundRect(GObject *gobj, double width, double height,
double corner);
void createG3DRect(GObject *gobj, double width, double height, bool raised);
void setRaised(GObject *gobj, bool raised);
void createGOval(GObject *gobj, double width, double height);
void createGArc(GObject *gobj, double width, double height,
double start, double sweep);
void setStartAngle(GObject *gobj, double angle);
void setSweepAngle(GObject *gobj, double angle);
void createGLine(GObject *gobj, double x1, double y1, double x2, double y2);
void setStartPoint(GObject *gobj, double x, double y);
void setEndPoint(GObject *gobj, double x, double y);
void createGLabel(GObject *gobj, std::string label);
GDimension createGImage(GObject *gobj, std::string filename);
void createGPolygon(GObject *gobj);
void addVertex(GObject *gobj, double x, double y);
void setActionCommand(GObject *gobj, std::string cmd);
GDimension getSize(GObject *gobj);
void createGButton(GObject *gobj, std::string label);
void createGCheckBox(GObject *gobj, std::string label);
bool isSelected(GObject *gobj);
void setSelected(GObject *gobj, bool state);
void createGSlider(GObject *gobj, int min, int max, int value);
int getValue(GObject *gobj);
void setValue(GObject *gobj, int value);
void createGTextField(GObject *gobj, int nChars);
std::string getText(GObject *gobj);
void setText(GObject *gobj, std::string str);
void createGChooser(GObject *gobj);
void addItem(GObject *gobj, std::string item);
std::string getSelectedItem(GObject *gobj);
void setSelectedItem(GObject *gobj, std::string item);
void createGCompound(GObject *gobj);
void deleteGObject(GObject *gobj);
void add(GObject *compound, GObject *gobj);
void remove(GObject *gobj);
void sendForward(GObject *gobj);
void sendToFront(GObject *gobj);
void sendBackward(GObject *gobj);
void sendToBack(GObject *gobj);
void setVisible(GObject *gobj, bool flag);
void setColor(GObject *gobj, std::string color);
void scale(GObject *gobj, double sx, double sy);
void rotate(GObject *gobj, double theta);
GRectangle getBounds(const GObject *gobj);
bool contains(const GObject *gobj, double x, double y);
void setLineWidth(GObject *gobj, double lineWidth);
void setLocation(GObject *gobj, double x, double y);
void setSize(GObject *gobj, double width, double height);
void setFrameRectangle(GObject *gobj, double x, double y,
double width, double height);
void draw(const GWindow & gw, const GObject *gobj);
void setFilled(GObject *gobj, bool flag);
void setFillColor(GObject *gobj, std::string color);
void setFont(GObject *gobj, std::string font);
void setLabel(GObject *gobj, std::string str);
double getFontAscent(const GObject *gobj);
double getFontDescent(const GObject *gobj);
GDimension getGLabelSize(const GObject *gobj);
};
Platform *getPlatform();
#endif