Files
Work/proto/source/CHARFORM.HPP
2024-08-07 09:16:27 -04:00

221 lines
4.4 KiB
C++

#ifndef _PROTO_CHARFORMAT_HPP_
#define _PROTO_CHARFORMAT_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_RICHEDIT_HPP_
#include <common/richedit.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
#ifndef _COMMON_RGBCOLOR_HPP_
#include <common/rgbcolor.hpp>
#endif
class CharFormat : private CHARFORMAT
{
public:
enum Mask{MaskBold=CFM_BOLD,MaskCharSet=CFM_CHARSET,MaskColor=CFM_COLOR,MaskFace=CFM_FACE,
MaskItalic=CFM_ITALIC,MaskOffset=CFM_OFFSET,MaskProtected=CFM_PROTECTED,
MaskSize=CFM_SIZE,MaskStrikeout=CFM_STRIKEOUT,MaskUnderline=CFM_UNDERLINE};
enum Effects{EffectAutoColor=CFE_AUTOCOLOR,EffectBold=CFE_BOLD,EffectItalic=CFE_ITALIC,
EffectStrikeout=CFE_STRIKEOUT,EffectUnderline=CFE_UNDERLINE,EffectProtected=CFE_PROTECTED};
CharFormat(void);
CharFormat(const CharFormat &someCharFormat);
virtual ~CharFormat();
CharFormat &operator=(const CharFormat &someCharFormat);
BOOL operator==(const CharFormat &someCharFormat)const;
operator CHARFORMAT &(void);
DWORD mask(void)const;
void mask(DWORD mask);
DWORD effects(void)const;
void effects(DWORD effects);
LONG yHeight(void)const;
void yHeight(LONG height);
LONG yOffset(void)const;
void yOffset(LONG offset);
RGBColor textColor(void)const;
void textColor(RGBColor textColor);
BYTE charSet(void)const;
void charSet(BYTE charSet);
BYTE pitchAndFamily(void)const;
void pitchAndFamily(BYTE pitchAndFamily);
String faceName(void)const;
void faceName(const String &faceName);
private:
void setZero(void);
void initLength(void);
};
#endif
inline
CharFormat::CharFormat(void)
{
setZero();
}
inline
CharFormat::CharFormat(const CharFormat &someCharFormat)
{
initLength();
*this=someCharFormat;
}
inline
CharFormat::~CharFormat()
{
}
inline
CharFormat &CharFormat::operator=(const CharFormat &someCharFormat)
{
mask(someCharFormat.mask());
effects(someCharFormat.effects());
yHeight(someCharFormat.yHeight());
yOffset(someCharFormat.yOffset());
textColor(someCharFormat.textColor());
charSet(someCharFormat.charSet());
pitchAndFamily(someCharFormat.pitchAndFamily());
faceName(someCharFormat.faceName());
return *this;
}
inline
BOOL CharFormat::operator==(const CharFormat &someCharFormat)const
{
return (mask()==someCharFormat.mask()&&
effects()==someCharFormat.effects()&&
yHeight()==someCharFormat.yHeight()&&
yOffset()==someCharFormat.yOffset()&&
textColor()==someCharFormat.textColor()&&
charSet()==someCharFormat.charSet()&&
pitchAndFamily()&&someCharFormat.pitchAndFamily()&&
faceName()==someCharFormat.faceName());
}
inline
CharFormat::operator CHARFORMAT &(void)
{
return *this;
}
inline
DWORD CharFormat::mask(void)const
{
return CHARFORMAT::dwMask;
}
inline
void CharFormat::mask(DWORD mask)
{
CHARFORMAT::dwMask=mask;
}
inline
DWORD CharFormat::effects(void)const
{
return CHARFORMAT::dwEffects;
}
inline
void CharFormat::effects(DWORD effects)
{
CHARFORMAT::dwEffects=effects;
}
inline
LONG CharFormat::yHeight(void)const
{
return CHARFORMAT::yHeight;
}
inline
void CharFormat::yHeight(LONG height)
{
CHARFORMAT::yHeight=height;
}
inline
LONG CharFormat::yOffset(void)const
{
return CHARFORMAT::yOffset;
}
inline
void CharFormat::yOffset(LONG yOffset)
{
CHARFORMAT::yOffset=yOffset;
}
inline
RGBColor CharFormat::textColor(void)const
{
return CHARFORMAT::crTextColor;
}
inline
void CharFormat::textColor(RGBColor textColor)
{
CHARFORMAT::crTextColor=(COLORREF)textColor;
}
inline
BYTE CharFormat::charSet(void)const
{
return CHARFORMAT::bCharSet;
}
inline
void CharFormat::charSet(BYTE charSet)
{
CHARFORMAT::bCharSet=charSet;
}
inline
BYTE CharFormat::pitchAndFamily(void)const
{
return CHARFORMAT::bPitchAndFamily;
}
inline
void CharFormat::pitchAndFamily(BYTE pitchAndFamily)
{
CHARFORMAT::bPitchAndFamily=pitchAndFamily;
}
inline
String CharFormat::faceName(void)const
{
return CHARFORMAT::szFaceName;
}
inline
void CharFormat::faceName(const String &faceName)
{
WORD strLength(faceName.length());
if(faceName.isNull()||strLength>=LF_FACESIZE)return;
::memcpy(szFaceName,(char*)(String&)faceName,strLength);
szFaceName[strLength]=0;
}
inline
void CharFormat::setZero(void)
{
initLength();
mask(0);
effects(0);
yHeight(0);
yOffset(0);
textColor(RGBColor(0,0,0));
charSet(0);
pitchAndFamily(0);
faceName("Arial");
}
inline
void CharFormat::initLength(void)
{
CHARFORMAT::cbSize=sizeof(CHARFORMAT);
}