文档章节

acllib.h头文件

努力喵
 努力喵
发布于 2015/11/06 23:50
字数 802
阅读 784
收藏 1
/*
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
////////////////////////////////////////////////////////////////
//  ACLLib - Advanced C Lab Library
//    Ver 2014-07
//    For students' Lab at Zhejiang University
//    Created     2008 by Gao Yuan
//    Modified     2009 by Cui Liwei
//                    2010 by Lan Huidong
//    Revised        2012 by Li Rui
//  Modified  2014 by Weng Kai for MOOC
////////////////////////////////////////////////////////////////

/*
For Dev C++, these lib files need to be added into linker options. 
Be sure to change the leading folders as your installation.
"C:/Program Files/Dev-Cpp/MinGW32/lib/libwinmm.a"
"C:/Program Files/Dev-Cpp/MinGW32/lib/libmsimg32.a"
"C:/Program Files/Dev-Cpp/MinGW32/lib/libkernel32.a"
"C:/Program Files/Dev-Cpp/MinGW32/lib/libuser32.a"
"C:/Program Files/Dev-Cpp/MinGW32/lib/libgdi32.a"
"C:/Program Files/Dev-Cpp/MinGW32/lib/libole32.a"
"C:/Program Files/Dev-Cpp/MinGW32/lib/liboleaut32.a"
"C:/Program Files/Dev-Cpp/MinGW32/lib/libuuid.a" 
*/
 
#ifndef __ACLLIB_H__
#define __ACLLIB_H__

#ifdef _UNICODE
#undef _UNICODE
#endif
#ifdef UNICODE
#undef UNICODE
#endif

#include <Windows.h>

#define BLACK            RGB(0, 0, 0)
#define RED                RGB(255, 0, 0)
#define GREEN            RGB(0, 255, 0)
#define BLUE            RGB(0, 0, 255)
#define CYAN            RGB(0, 255, 255)
#define MAGENTA            RGB(255, 0, 255)
#define YELLOW            RGB(255, 255, 0)
#define WHITE            RGB(255, 255, 255)

#define EMPTY                0xffffffff
#define DEFAULT                -1

typedef enum
{ 
    PEN_STYLE_SOLID,
    PEN_STYLE_DASH,            /* -------  */
    PEN_STYLE_DOT,            /* .......  */
    PEN_STYLE_DASHDOT,        /* _._._._  */
    PEN_STYLE_DASHDOTDOT,    /* _.._.._  */
    PEN_STYLE_NULL
} ACL_Pen_Style;

typedef enum
{
    BRUSH_STYLE_SOLID = -1,
    BRUSH_STYLE_HORIZONTAL,        /* ----- */
    BRUSH_STYLE_VERTICAL,        /* ||||| */
    BRUSH_STYLE_FDIAGONAL,        /* \\\\\ */
    BRUSH_STYLE_BDIAGONAL,        /* ///// */
    BRUSH_STYLE_CROSS,            /* +++++ */
    BRUSH_STYLE_DIAGCROSS,        /* xxxxx */
    BRUSH_STYLE_NULL
} ACL_Brush_Style;

typedef enum
{
    NO_BUTTON = 0,
    LEFT_BUTTON,
    MIDDLE_BUTTON,
    RIGHT_BUTTON
} ACL_Mouse_Button;

typedef enum 
{
    BUTTON_DOWN,
    BUTTON_DOUBLECLICK,
    BUTTON_UP,
    ROLL_UP,
    ROLL_DOWN,
    MOUSEMOVE    
} ACL_Mouse_Event;

typedef enum 
{
    KEY_DOWN,
    KEY_UP
} ACL_Keyboard_Event;

typedef struct
{
    HBITMAP hbitmap;
    int width;
    int height;
} ACL_Image;

//typedef enum
//{
//    TM_NO = 0x00,
//    TM_COLOR = 0x01,
//    TM_ALPHA = 0x02
//} ACL_TransparentMode;

typedef COLORREF ACL_Color;
typedef int ACL_Sound;

typedef void (*KeyboardEventCallback) (int key,int event);
typedef void (*CharEventCallback) (char c);
typedef void (*MouseEventCallback) (int x, int y, int button, int event);
typedef void (*TimerEventCallback) (int timerID);

// 
int Setup();

void initWindow(const char title[], int left, int top, int width, int height);
void msgBox(const char title[],const char text[],int flag);

void registerKeyboardEvent(KeyboardEventCallback callback);
void registerCharEvent(CharEventCallback callback);
void registerMouseEvent(MouseEventCallback callback);
void registerTimerEvent(TimerEventCallback callback);

void startTimer(int timerID, int timeinterval);
void cancelTimer(int timerID);

// Sound
void loadSound(const char *fileName,ACL_Sound *pSound);
void playSound(ACL_Sound soundID,int repeat);
void stopSound(ACL_Sound soundID);

// Paint
void beginPaint();
void endPaint();
void clearDevice(void);
int getWidth();
int getHeight();

// Pen
void setPenColor(ACL_Color color);
void setPenWidth(int width);
void setPenStyle(ACL_Pen_Style style);

// Brush
void setBrushColor(ACL_Color color);
void setBrushStyle(ACL_Brush_Style style);

// Text
void setTextColor(ACL_Color color);
void setTextBkColor(ACL_Color color);
void setTextSize(int size);
void setTextFont(const char *pFontName);

void paintText(int x, int y, const char *pStr);

void setCaretSize(int w,int h);
void setCaretPos(int x,int y);
void showCaret();
void hideCaret();

// Pixel
void putPixel(int x, int y, ACL_Color color);
ACL_Color getPixel(int x, int y);

// the Point
int getX(void);
int getY(void);
void moveTo(int x, int y);
void moveRel(int dx,int dy);

// Lines and Curves
void arc(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, \
    int nXStartArc, int nYStartArc, int nXEndArc, int nYEndArc);
void line(int x0, int y0, int x1, int y1);
void lineTo(int nXEnd, int nYEnd);
void lineRel(int dx, int dy);
void polyBezier(const POINT *lppt,int cPoints);
void polyLine(const POINT *lppt, int cPoints);

// Filled Shapes
void chrod(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, \
    int nXRadial1, int nYRadial1, int nXRadial2, int nYRadial2);
void ellipse( int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
void pie(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, \
    int nXRadial1, int nYRadial1, int nXRadial2, int nYRadial2);
void polygon(const POINT *lpPoints, int nCount);
void rectangle(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect);
void roundrect(int nLeftRect, int nTopRect, int nRightRect, int nBottomRect, \
    int nWidth, int nHeight);

// Image
void loadImage(const char *pImageFileName, ACL_Image *pImage);
void freeImage(ACL_Image *pImage);

void putImage(ACL_Image *pImage, int x, int y);
void putImageScale(ACL_Image *pImage,int x,int y,int width,int height);
void putImageTransparent(ACL_Image *pImage,int x,int y,int width,int height,ACL_Color bkColor);

//void putImageEx(ACL_Image *pImage,int dx,int dy,int dw,int dh, \
//    int sx,int sy,int sw,int sh);

//void setTransparentMode(ACL_TransparenetMode);
//void setTransparentColor(ACL_Color);
//void setTransparetnAlpha(int alpha);

void initConsole(void);

//get the random number
int random(int num);

#endif


© 著作权归作者所有

上一篇: acllib.c
下一篇: 简单的写字板
努力喵
粉丝 5
博文 105
码字总数 34117
作品 0
广州
私信 提问
关注C++细节——写头文件注意

在C++中我们写头文件时经常需要#include来包含其他头文件。头文件定义的实体经常使用其他头文件的设施。 包含其他头文件是如此的司空见惯,甚至一个头文件被多次包含进同一源文件中也不是什么...

iaccepted
2011/08/30
0
0
文件头信息中用来判断文件类型的16进制串

从网上找的 正确性有待验证... Java code 1、从Ultra-edit-32中提取出来的 JPEG (jpg),文件头:FFD8FFPNG (png),文件头:89504E47GIF (gif),文件头:47494638TIFF (tif),文件头:49492...

大鹏
2010/06/21
1K
0
各种文件头特征

最近迷上CTF了,此文章作为日常解题参考之用。 各种类型文件头 由这些文件头即使文件后缀被乱改也可以通过查看二进制文件查出文件的匹配格式,当然这就是一些播放器识别文件的方法 1、从Ultra...

chenliqni
2016/09/08
0
0
C++头文件包含顺序问题(转载)

C++中类的声明和类的定义分开几乎成了一个不成文的规定。这样做的好处是使得类的声明和实现分开,清晰明了,同时便于库函数发布。但是在实际编程中由此也常常引起了一些由于头文件的包含顺序...

Matrix4X4
2012/06/07
946
0
关于C语言项目工程文件目录组织结构

2011年12月29日 经常会在对源代码进行如何组织时犯难: 1)头文件的内容应写些什么? 2)函数的具体实现应放在哪个文件里?是否与头文件放在一处? 3)自定义的头文件(.h)与定义函数(.c)...

01010101010101010101
2014/01/03
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
56分钟前
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部