/* * 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