#if !defined(AFX_DIGISTRING_H__F77484C2_745F_11D3_A718_87712333104C__INCLUDED_) #define AFX_DIGISTRING_H__F77484C2_745F_11D3_A718_87712333104C__INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 // Digistring.h : header file // // Copyright (C) 2000 by Michel Wassink // All rights reserved // // This is free software. // This code may be used in compiled form in any way you desire. This // file may be redistributed unmodified by any means PROVIDING it is // not sold for profit without the authors written consent, and // providing that this notice and the authors name and all copyright // notices remains intact. If the source code in this file is used in // any commercial application then a statement along the lines of // "Portions Copyright © 2000 Michel Wassink" must be included in // the startup banner, "About" box or printed documentation. An email // letting me know that you are using it would be nice as well. That's // not much to ask considering the amount of work that went into this. // // No warrantee of any kind, expressed or implied, is included with this // software; use at your own risk, responsibility for damages (if any) to // anyone resulting from the use of this software rests entirely with the // user. // // Version: 1.0 // Release: 1 (februari 2000 to www.codeguru.com and www.codeproject.com) // ----------------------------------------------------------------------- // Notes to changes for release 1 (V1.0): // - First release. // // Send bug reports, bug fixes, enhancements, requests, flames, etc., and // I'll try to keep a version up to date. I can be reached as follows: // mwassink@csi.com (private site) // An email letting me know that you are using it would be nice. ///////////////////////////////////////////////////////////////////////////// #include using namespace std ; #include "MEMDC.H" #include "RGBCOLOR.H" // CRect class with double precision for accurate drawing. class CDoubleRect { public: void SetRect(double x1, double y1, double x2, double y2) { left = x1; top = y1; right = x2; bottom = y2;} double Width() const{return right - left;} double Height() const{return bottom - top;} void SetRectEmpty(){left = top = right = bottom = 0.0;} public: double left, top, right, bottom; }; class CDSegment { public: CDSegment(); CDSegment(const CDSegment& Segment); ~CDSegment(); void DefPoints(const POINT* lpPoints, const BYTE* lpTypes, int nCount); void Draw(CDC *pDC, CDoubleRect DrawPlace, int iWidth) const; void FreeSegment(); CDSegment operator=(const CDSegment &Segment); // Implementation public: CPoint * m_paPoints; BYTE * m_paTypes; int m_nCount; }; typedef vector DSegmentVector; class CDigiChar { // Construction public: CDigiChar(); //Attributes: public: virtual ~CDigiChar(); virtual void SetElementData(WORD wSegmData, int iDispStyle); void Draw(CDC *pDC, CDoubleRect DrawPlace, CPen *pOffPen, CPen *pOnpen, CBrush *pOffBrush, CBrush *pOnBrush); void SetColor(COLORREF OffColor, COLORREF OnColor); int GetNormWidth() const; protected: int m_Width; WORD m_wSegmData; DSegmentVector m_SegmentVector; int m_NSegments; COLORREF m_OffColor; COLORREF m_OnColor; }; class CDigiColonDotChar : public CDigiChar { public: CDigiColonDotChar(); void SetElementData(WORD wSegmData, int iDispStyle); }; class CDigi7Segment : public CDigiChar { public: CDigi7Segment(); void SetElementData(WORD wSegmData, int iDispStyle); }; class CDigi14Segment : public CDigiChar { public: CDigi14Segment(); void SetElementData(WORD wSegmData, int iDispStyle); }; typedef vector DigiCharVector; ///////////////////////////////////////////////////////////////////////////// // CDigistring class class CDigistring : public CStatic { // Construction public: CDigistring(); // Attributes public: enum { DS_SMOOTH = 1, // Pioneer kind of characters DS_STYLE14 = 2, // use allways 14 segment display. DS_SZ_PROP = 4 // size proportional }; // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CDigistring) //}}AFX_VIRTUAL // Implementation public: virtual ~CDigistring(); void SetText(LPCTSTR lpszText); void Format(LPCTSTR lpszFormat, ...); void SetColor(COLORREF OffColor, COLORREF OnColor); void SetBackColor(COLORREF BackColor = BLACK); BOOL ModifyDigiStyle(DWORD dwRemove, DWORD dwAdd); // Generated message map functions protected: CDigiChar * DefineChar(TCHAR cChar); void BuildString(); CString m_strText; BOOL m_Modified; DigiCharVector m_CharVector; COLORREF m_OffColor; COLORREF m_OnColor; COLORREF m_BackColor; DWORD m_DispStyle; //{{AFX_MSG(CDigistring) afx_msg void OnPaint(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Developer Studio will insert additional declarations immediately before the previous line. #endif // !defined(AFX_DIGISTRING_H__F77484C2_745F_11D3_A718_87712333104C__INCLUDED_)