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

📄 vsm.h

📁 频谱仪锂电池电量表,非常适合学习和使用单片机开发的人用
💻 H
📖 第 1 页 / 共 3 页
字号:
/********************************************************************/
/********************************************************************/
/*****                                                          *****/
/*****        L A B C E N T E R    E L E C T R O N I C S        *****/
/*****                                                          *****/
/*****       LABCENTER INTEGRATED SIMULATION ARCHITECTURE       *****/
/*****                                                          *****/
/*****         Virtual System Modeling Interface Header         *****/
/*****                                                          *****/
/********************************************************************/
/********************************************************************/

#ifndef VSM_HPP
#define VSM_HPP
// Version 1.00 - Initial release.
// Version 1.01 - Added setvdmhandler() to IINSTANCE, and the ICPU interface
//                Added sethandler() to IDSIMPIN.
//                Added setcallbackex to IDSIMCKT.
// Version 1.02 - Added IWATCHPOPUP interface.
// Version 1.03 - Added getsteptoaddr() function to sourcewin.
// Version 1.04 - COMPONENT::getsymbolarea() now returns BOOL.
//                Added allocvars(), intergrate() and truncerr() to ISPICECKT.
// Version 1.05 - Added createpin and createnet functionality.
// Version 1.06 - Added timestamped authorization function.
// Version 1.07 - Added DSIM systime() function.
//                Added setclockcallback() function.

// Version 1.10 - Added streamlined settiming/setstates/drivexxx methods to IDSIMPIN.
//                Added loadmemory() function to IINSTANCE.
//                Added bus pin API.

#define VSM_API_VERSION  110

// 01/09/2003
#define VSM_BUILD_DATE   0x9ADFBCA5

// VSM uses 4 byte alignment throughout
#pragma pack(push,4)

// Portability typedefs:
#ifndef STDLX_H
#define VOID void
typedef double DOUBLE;
typedef char CHAR;
typedef unsigned char BYTE;
typedef signed short SHORT;
typedef signed int INT;
typedef signed long LONG;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef signed int BOOL;
typedef unsigned int UINT;
typedef unsigned long COLOUR;

#define TRUE  1
#define FALSE 0

#endif

#ifdef __SC__
typedef long long LONGLONG;
#else
typedef __int64 LONGLONG;
#endif

#ifndef _WINDOWS_
typedef VOID *HANDLE;
typedef VOID *HWND;
typedef VOID *HDC;
typedef unsigned WPARAM;
typedef long LPARAM;
typedef long LRESULT;
#endif

typedef unsigned MESSAGE;

#ifndef GM_HPP
#if defined(STDOS_H) || !defined(_WINDOWS_)
struct POINT { LONG x, y; };
struct BOX  { LONG x1, y1, x2, y2; };
#else
typedef RECT BOX;
#endif
#define MIR_X 1
#define MIR_Y 2
#endif


/*********************************************************************
*****  Licence API ****
**********************/


class ILICENCESERVER
 { public:
      virtual BOOL authorize (DWORD product_id, DWORD apiver=VSM_API_VERSION) = 0;
      virtual BOOL authorizeex (DWORD product_id, DWORD apiver=VSM_API_VERSION, DWORD builddate=VSM_BUILD_DATE) = 0;
      virtual DWORD getid() = 0;
      virtual CHAR *getname() = 0;
      virtual CHAR *getcompany() = 0;
      virtual CHAR *getexpirydate() = 0;
 };


/*********************************************************************
*****  Graphical Modelling Interface ****
****************************************/

// Types for active component messaging:
typedef LONG ACTIVESTATE;
struct ACTIVEDATA;

// Return types for aimulator interfaces:
class ISPICEMODEL;
class IDSIMMODEL;

// Pin types:
typedef INT SPICENODE;
typedef VOID *DSIMNODE;
class IDSIMPIN1;
class IDSIMPIN2;
class IBUSPIN;

#define IDSIMPIN IDSIMPIN2

// Flags for controlling property visibility
#define SHOW_ALL      0
#define HIDE_KEYWORD  1
#define HIDE_VALUE    2
#define HIDE_ALL      3
#define HIDE_NOMODIFY 4

// Useful Colours:
#ifndef COLOURS_H
#define  MAKECOLOUR(r,g,b) ((COLOUR)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
#define  BLACK           MAKECOLOUR(0x00,0x00,0x00)
#define  BLUE            MAKECOLOUR(0x00,0x00,0xC0)
#define  GREEN           MAKECOLOUR(0x00,0xC0,0x00)
#define  CYAN            MAKECOLOUR(0x00,0xC0,0xC0)
#define  RED             MAKECOLOUR(0xC0,0x00,0x00)
#define  MAGENTA         MAKECOLOUR(0xC0,0x00,0xC0)
#define  YELLOW          MAKECOLOUR(0xC0,0xC0,0x00)
#define  WHITE           MAKECOLOUR(0xC0,0xC0,0xC0)
#define  GREY            MAKECOLOUR(0x80,0x80,0x80)
#define  DARKBLUE        MAKECOLOUR(0x00,0x00,0x40)
#define  DARKGREEN       MAKECOLOUR(0x00,0x40,0x00)
#define  DARKCYAN        MAKECOLOUR(0x00,0x40,0x40)
#define  DARKRED         MAKECOLOUR(0x40,0x00,0x00)
#define  DARKMAGENTA     MAKECOLOUR(0x40,0x00,0x40)
#define  DARKYELLOW      MAKECOLOUR(0x40,0x40,0x00)
#define  DARKGREY        MAKECOLOUR(0x40,0x40,0x40)
#define  MIDBLUE         MAKECOLOUR(0x00,0x00,0x80)
#define  MIDGREEN        MAKECOLOUR(0x00,0x80,0x00)
#define  MIDCYAN         MAKECOLOUR(0x00,0x80,0x80)
#define  MIDRED          MAKECOLOUR(0x80,0x00,0x00)
#define  MIDMAGENTA      MAKECOLOUR(0x80,0x00,0x80)
#define  MIDYELLOW       MAKECOLOUR(0x80,0x80,0x00)
#define  MIDGREY         MAKECOLOUR(0x80,0x80,0x80)
#define  LIGHTBLUE       MAKECOLOUR(0x00,0x00,0xC0)
#define  LIGHTGREEN      MAKECOLOUR(0x00,0xC0,0x00)
#define  LIGHTCYAN       MAKECOLOUR(0x00,0xC0,0xC0)
#define  LIGHTRED        MAKECOLOUR(0xC0,0x00,0x00)
#define  LIGHTMAGENTA    MAKECOLOUR(0xC0,0x00,0xC0)
#define  LIGHTYELLOW     MAKECOLOUR(0xC0,0xC0,0x00)
#define  LIGHTGREY       MAKECOLOUR(0xC0,0xC0,0xC0)
#define  BRIGHTBLUE      MAKECOLOUR(0x00,0x00,0xFF)
#define  BRIGHTGREEN     MAKECOLOUR(0x00,0xFF,0x00)
#define  BRIGHTCYAN      MAKECOLOUR(0x00,0xFF,0xFF)
#define  BRIGHTRED       MAKECOLOUR(0xFF,0x00,0x00)
#define  BRIGHTMAGENTA   MAKECOLOUR(0xFF,0x00,0xFF)
#define  BRIGHTYELLOW    MAKECOLOUR(0xFF,0xFF,0x00)
#define  BRIGHTWHITE     MAKECOLOUR(0xFF,0xFF,0xFF)

#define  INVISIBLE       -1
#define  NOCOLOUR        -1

#endif

// Text justifications:
#define TXJ_LEFT   0
#define TXJ_RIGHT  1
#define TXJ_CENTRE 2
#define TXJ_BOTTOM 0
#define TXJ_TOP    4
#define TXJ_MIDDLE 8

// Handles for graphics and text styles
typedef VOID *HGFXSTYLE;
typedef VOID *HTEXTSTYLE;

// Pop-up window interfaces.
// Handles, types, etc. for pop-up windows:
typedef VOID IPOPUP;
typedef DWORD POPUPID;
typedef DWORD INSTANCEID;

enum POPUPTYPES
 { PWT_USER     = 0,
   PWT_DEBUG    = 1,
   PWT_STATUS   = 2,
   PWT_MEMORY   = 3,
   PWT_WATCH    = 5,
   PWT_SOURCE   = 4,
   PWT_VAR      = 6
 };

// Flags for creating pop-up windows. The bottom 20 bits are reserved for use by VSM,
// whilst the remaining top 12 bits are available for user pop-ups.
enum POPUPFLAGS
 { PWF_VISIBLE       = 0x00000001,
   PWF_SIZEABLE      = 0x00000002,
   PWF_LOCKPOSITION  = 0x00000004,
   PWF_HIDEONANIMATE = 0x00000008,
   PWF_AUTOREFRESH   = 0x00000010,
   PWF_WANTKEYBOARD  = 0x00000020,
   PWF_ACTIVE        = 0x00008000,
   PWF_INTERNAL      = 0x80000000
 };

// Structure used to pass createpopup information:
struct CREATEPOPUPSTRUCT
 { POPUPID    id;
   POPUPTYPES type;
   CHAR *caption;
   INT   width, height;
   DWORD flags;
 };


// Definition of services provided by an Active Component to an Active Model.
class ICOMPONENT
 { public:
      // Property management:
      virtual CHAR *getprop (CHAR *name) = 0;
      virtual CHAR *getproptext (VOID) = 0;
      virtual VOID addprop (CHAR *propname, CHAR *item, WORD hflags) = 0;
      virtual VOID delprop (CHAR *propname) = 0;
      virtual VOID setproptext(CHAR *text) = 0;

      // Active State processing:
      virtual ACTIVESTATE getstate (INT element, ACTIVEDATA *data) = 0;
      virtual BOOL setstate (ACTIVESTATE state) = 0;

      // Graphics management:
      virtual VOID setdrawscale (INT ppi) = 0;
      virtual HDC  begincache (BOX &area) = 0;
      virtual HDC  begincache (INT symbol) = 0;
      virtual VOID endcache() = 0;

      // Vector drawing services:
      virtual HGFXSTYLE creategfxstyle (CHAR *name=NULL) = 0;
      virtual VOID selectgfxstyle (HGFXSTYLE style) = 0;
      virtual VOID setpenwidth (INT w) = 0;
      virtual VOID setpencolour (COLOUR c) = 0;
      virtual VOID setbrushcolour (COLOUR c) = 0;
      virtual VOID drawline (INT x1, INT y1, INT x2, INT y2) = 0;
      virtual VOID drawbox (INT x1, INT y1, INT x2, INT y2) = 0;
      virtual VOID drawbox (BOX &bx) = 0;
      virtual VOID drawcircle (INT x, INT y, INT radius) = 0;
      virtual VOID drawbezier (POINT *, INT numpoints=4) = 0;
      virtual VOID drawpolyline (POINT *, INT numpoints) = 0;
      virtual VOID drawpolygon (POINT *, INT numpoints) = 0;
      virtual VOID drawsymbol(INT symbol) = 0;
      virtual VOID drawsymbol(INT x, INT y, INT rot, INT mir, INT symbol) = 0;
      virtual VOID drawstate (ACTIVESTATE state) = 0;
      virtual BOOL getsymbolarea (INT symbol, BOX *area) = 0;
      virtual BOOL getmarker (CHAR *name, POINT *pos=NULL, INT *rot=NULL, INT *mir=NULL) = 0;

      // Text output services:
      virtual HTEXTSTYLE createtextstyle (CHAR *name=NULL) = 0;
      virtual VOID selecttextstyle (HTEXTSTYLE style) = 0;
      virtual VOID settextfont (CHAR *name) = 0;
      virtual VOID settextsize (INT h) = 0;
      virtual VOID setbold (BOOL f) = 0;
      virtual VOID setitalic (BOOL f) = 0;
      virtual VOID setunderline (BOOL f) = 0;
      virtual VOID settextcolour (COLOUR c) = 0;
      virtual VOID drawtext (INT x, INT y, INT rot, INT jflags, CHAR *text, ...) = 0;

      // Pop-up window support:
      virtual IPOPUP *createpopup (CREATEPOPUPSTRUCT *cps) = 0;
      virtual VOID deletepopup (POPUPID id) = 0;

      // Miscellaneous:
      virtual VOID settimestep (DOUBLE time) = 0;
      virtual VOID error (CHAR *msg, ...) = 0;
      virtual VOID repaint (BOOL erase) = 0;

 };

// Flags passed to actuate function:
enum ACTUATEFLAGS
 { ACF_LEFT   =  0x00000001,
   ACF_RIGHT  =  0x00000002,
   ACF_MIDDLE =  0x00000004,
   ACF_INC    =  0x00010000,
   ACF_DEC    =  0x00020000,
   ACF_TOGGLE =  0x00040000
 };

// Definition of services that a graphical model must provide to an active component
class IACTIVEMODEL
 { public:
      virtual VOID initialize (ICOMPONENT *cpt) = 0;
      virtual ISPICEMODEL *getspicemodel (CHAR *primitive) = 0;
      virtual IDSIMMODEL  *getdsimmodel (CHAR *primitive) = 0;
      virtual VOID plot (ACTIVESTATE state) = 0;
      virtual VOID animate (INT element, ACTIVEDATA *newstate) = 0;
      virtual BOOL actuate (WORD key, INT x, INT y, DWORD flags) = 0;
 };



/*********************************************************************

⌨️ 快捷键说明

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