⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extgraph.h

📁 书名:C语言科学与艺术,以前交钱下载的
💻 H
字号:
/* * File: extgraph.h * Version: 3.0 * Last modified on Tue Oct  4 11:24:41 1994 by eroberts * ----------------------------------------------------- * This interface is the extended graphics interface. * It includes all of the facilities in graphics.h, plus * several additional functions that are designed to * support more sophisticated, interactive graphics. */#ifndef _extgraph_h#define _extgraph_h#include "genlib.h"/* Exported functions *//* Section 1 -- Basic functions from graphics.h */#include "graphics.h"/* Section 2 -- Elliptical arcs *//* * Function: DrawEllipticalArc * Usage: DrawEllipticalArc(rx, ry, start, sweep); * ----------------------------------------------- * This procedure draws an elliptical arc.  It is exactly * the same in its operation as DrawArc in the graphics.h * interface, except that the radius is different along the * two axes. */void DrawEllipticalArc(double rx, double ry,                       double start, double sweep);/* Section 3 -- Graphical regions*//* * Functions: StartFilledRegion, EndFilledRegion * Usage: StartFilledRegion(density); *        . . . other calls . . . *        EndFilledRegion(); * ------------------------------ * These calls make it possible to draw filled shapes on the * display.  After calling StartFilledRegion, any calls to * DrawLine and DrawArc are used to create a shape definition * and do not appear on the screen until EndFilledRegion is * called.  The lines and arcs must be consecutive, in the * sense that each new element must start where the last * one ended.  MovePen calls may occur at the beginning * or the end of the region, but not in the interior. When * EndFilledRegion is called, the entire region appears on the * screen, with its interior filled in.  The density parameter * is a number between 0 and 1 and indicates how the dot density * to be used for the fill pattern.  If density is 1, the shape * will be filled in a solid color; if it is 0, the fill will be * invisible.  In between, the implementation will use a dot * pattern that colors some of the screen dots but not others. */void StartFilledRegion(double density);void EndFilledRegion(void);/* Section 4 -- String functions *//* * Function: DrawTextString * Usage: DrawTextString(text); * ---------------------------- * This function displays the string text at the current point * in the current font and size.  The current point is updated * so that the next DrawTextString command would continue from * the next character position.  The string may not include the * newline character. */void DrawTextString(string text);/* * Function: TextStringWidth * Usage: w = TextStringWidth(text); * --------------------------------- * This function returns the width of the text string if displayed * at the current font and size. */double TextStringWidth(string text);/* * Function: SetFont * Usage: SetFont(font); * --------------------- * This function sets a new font according to the font string, * which is case-independent.  Different systems support different * fonts, although common ones like "Times" and "Courier" are often * supported.  Initially, the font is set to "Default" which is * always supported, although the underlying font is system * dependent.  If the font name is unrecognized, no error is * generated, and the font remains unchanged.  If you need to * detect this condition, you can call GetFont to see if the * change took effect.  By not generating an error in this case, * programs become more portable. */void SetFont(string font);/* * Function: GetFont * Usage: font = GetFont(); * ------------------------ * This function returns the current font name as a string. */string GetFont(void);/* * Function: SetPointSize * Usage: SetPointSize(size); * -------------------------- * This function sets a new point size.  If the point size is * not supported for a particular font, the closest existing * size is selected. */void SetPointSize(int size);/* * Function: GetPointSize * Usage: size = GetPointSize(); * ----------------------------- * This function returns the current point size. */int GetPointSize(void);/* * Text style constants * -------------------- * The constants Bold and Italic are used in the SetStyle * command to specify the desired text style.  They may also * be used in combination by adding these constants together, * as in Bold + Italic.  The constant Normal indicates the * default style. */#define Normal  0#define Bold    1#define Italic  2/* * Function: SetStyle * Usage: SetStyle(style); * ----------------------- * This function establishes the current style properties * for text based on the parameter style, which is an integer * representing the sum of any of the text style constants. */void SetStyle(int style);/* * Function: GetStyle * Usage: style = GetStyle(); * -------------------------- * This function returns the current style. */int GetStyle(void);/* * Functions: GetFontAscent, GetFontDescent, GetFontHeight * Usage: ascent = GetFontAscent(); *        descent = GetFontDescent(); *        height = GetFontHeight(); * ------------------------------------------------------- * These functions return properties of the current font that are * used to calculate how to position text vertically on the page. * The ascent of a font is the distance from the baseline to the * top of the largest character; the descent is the maximum * distance any character extends below the baseline.  The height * is the total distance between two lines of text, including the * interline space (which is called leading). * * Examples: *   To change the value of y so that it indicates the next text *   line, you need to execute * *        y -= GetFontHeight(); * *   To center text vertically around the coordinate y, you need *   to start the pen at * *       y - GetFontAscent() / 2 */double GetFontAscent(void);double GetFontDescent(void);double GetFontHeight(void);/* Section 5 -- Mouse support *//* * Functions: GetMouseX, GetMouseY * Usage: x = GetMouseX(); *        y = GetMouseY(); * ------------------------------- * These functions return the x and y coordinates of the mouse, * respectively.  The coordinate values are real numbers measured * in inches from the origin and therefore match the drawing * coordinates. */double GetMouseX(void);double GetMouseY(void);/* * Functions: MouseButtonIsDown * Usage: if (MouseButtonIsDown()) . . . * ------------------------------------- * This function returns TRUE if the mouse button is currently * down.  For maximum compatibility among implementations, the * mouse is assumed to have one button.  If the mouse has more * than one button, this function returns TRUE if any button * is down. */bool MouseButtonIsDown(void);/* * Functions: WaitForMouseDown, WaitForMouseUp * Usage: WaitForMouseDown(); *        WaitForMouseUp(); * ------------------------------------------- * The WaitForMouseDown function waits until the mouse button * is pressed and then returns.  WaitForMouseUp waits for the * button to be released. */void WaitForMouseDown(void);void WaitForMouseUp(void);/* Section 6 -- Color support *//* * Function: HasColor * Usage: if (HasColor()) . . . * ---------------------------- * This function returns TRUE if the graphics window can display a * color image.  Note that this condition is stronger than simply * checking whether a color display is available.  Because color * windows require more memory than black and white ones, this * function will return FALSE with a color screen if there is * not enough memory to store a colored image.  On the Macintosh, * for example, it is usually necessary to increase the partition * size to at least 1MB before color windows can be created. */bool HasColor(void);/* * Function: SetPenColor * Usage: SetPenColor(color); * -------------------------- * This function sets the color of the pen used for any drawing, * including lines, text, and filled regions.  The color is a * string, which will ordinarily be one of the following * predefined color names: * *    Black, Dark Gray, Gray, Light Gray, White, *    Red, Yellow, Green, Cyan, Blue, Magenta * * The first line corresponds to standard gray scales and the * second to the primary and secondary colors of light.  The * built-in set is limited to these colors because they are * likely to be the same on all hardware devices.  For finer * color control, you can use the DefineColor function to * create new color names as well. */void SetPenColor(string color);/* * Function: GetPenColor * Usage: color = GetPenColor(); * ----------------------------- * This function returns the current pen color as a string. */string GetPenColor(void);/* * Function: DefineColor * Usage: DefineColor(name, red, green, blue); * ------------------------------------------- * This function allows the client to define a new color name * by supplying intensity levels for the colors red, green, * and blue, which are the primary colors of light.  The * color values are provided as real numbers between 0 and 1, * indicating the intensity of that color.  For example, * the predefined color Magenta has full intensity red and * blue but no green and is therefore defined as: * *      DefineColor("Magenta", 1, 0, 1); * * DefineColor allows you to create intermediate colors on * many displays, although the results vary significantly * depending on the hardware.  For example, the following * usually gives a reasonable approximation of brown: * *      DefineColor("Brown", .35, .20, .05); */void DefineColor(string name,                 double red, double green, double blue);/* Section 7 -- Miscellaneous functions *//* * Function: SetEraseMode * Usage: SetEraseMode(TRUE); *        SetEraseMode(FALSE); * --------------------------- * The SetEraseMode function sets the value of the internal * erasing flag.  Setting this flag is similar to setting the * color to "White" in its effect but does not affect the * current color setting.  When erase mode is set to FALSE, * normal drawing is restored, using the current color. */void SetEraseMode(bool mode);/* * Function: GetEraseMode * Usage: mode = GetEraseMode(); * ----------------------------- * This function returns the current state of the erase mode flag. */bool GetEraseMode(void);/* * Function: SetWindowTitle * Usage: SetWindowTitle(title); * ----------------------------- * This function sets the title of the graphics window, if such * an operation is possible on the display.  If it is not possible * for a particular implementation, the call is simply ignored. * This function may be called prior to the InitGraphics call to * set the initial name of the window. */void SetWindowTitle(string title);/* * Function: GetWindowTitle * Usage: title = GetWindowTitle(); * -------------------------------- * This function returns the title of the graphics window.  If the * implementation does not support titles, this call returns the * empty string. */string GetWindowTitle(void);/* * Function: UpdateDisplay * Usage: UpdateDisplay(); * ----------------------- * This function initiates an immediate update of the graphics * window and is necessary for animation.  Ordinarily, the * graphics window is updated only when the program waits for * user input. */void UpdateDisplay(void);/* * Function: Pause * Usage: Pause(seconds); * ---------------------- * The Pause function updates the graphics window and then * pauses for the indicated number of seconds.  This function * is useful for animation where the motion would otherwise * be too fast. */void Pause(double seconds);/* * Function: ExitGraphics * Usage: ExitGraphics(); * ---------------------- * The ExitGraphics function closes the graphics window and * exits from the application without waiting for any additional * user interaction. */void ExitGraphics(void);/* * Functions: SaveGraphicsState, RestoreGraphicsState * Usage: SaveGraphicsState(); *        . . . graphical operations . . . *        RestoreGraphicsState(); * --------------------------------------------------- * The SaveGraphicsState function saves the current graphics * state (the current pen position, the font, the point size, * and the erase mode flag) internally, so that they can be * restored by the next RestoreGraphicsState call.  These two * functions must be used in pairs but may be nested to any depth. */void SaveGraphicsState(void);void RestoreGraphicsState(void);/* * Functions: GetFullScreenWidth, GetFullScreenHeight * Usage: width = GetFullScreenWidth(); *        height = GetFullScreenHeight(); * -------------------------------------- * These functions return the height and width of the entire * display screen, not the graphics window.  Their only * significant use is for applications that need to adjust * the size of the graphics window based on available screen * space.  These functions may be called before InitGraphics * has been called. */double GetFullScreenWidth(void);double GetFullScreenHeight(void);/* * Functions: SetWindowSize * Usage: SetWindowSize(width, height); * ------------------------------------ * This function sets the window size to the indicated dimensions, * if possible.  This function should be called before the graphics * window is created by InitGraphics.  Attempts to change the size * of an existing window are ignored by most implementations.  This * function should be used sparingly because it reduces the * portability of applications, particularly if the client * requests more space than is available on the screen. */void SetWindowSize(double width, double height);/* * Functions: GetXResolution, GetYResolution * Usage: xres = GetXResolution(); *        yres = GetYResolution(); * ----------------------------------------- * These functions return the number of pixels per inch along * each of the coordinate directions and are useful for applications * in which it is important for short distances to be represented * uniformly in terms of dot spacing.  Even though the x and y * resolutions are the same for most displays, clients should * not rely on this property. * * Note: Lines in the graphics library are one pixel unit wide and * have a length that is always one pixel longer than you might * expect.  For example, the function call * *     DrawLine(2 / GetXResolution(), 0); * * draws a line from the current point to the point two pixels * further right, which results in a line of three pixels. */double GetXResolution(void);double GetYResolution(void);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -