mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
265a890d7c
CORE-16585
223 lines
5.7 KiB
C++
223 lines
5.7 KiB
C++
/*
|
|
* GdiPlusStringFormat.h
|
|
*
|
|
* Windows GDI+
|
|
*
|
|
* This file is part of the w32api package.
|
|
*
|
|
* THIS SOFTWARE IS NOT COPYRIGHTED
|
|
*
|
|
* This source code is offered for use in the public domain. You may
|
|
* use, modify or distribute it freely.
|
|
*
|
|
* This code is distributed in the hope that it will be useful but
|
|
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
|
* DISCLAIMED. This includes but is not limited to warranties of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
*/
|
|
|
|
#ifndef _GDIPLUSSTRINGFORMAT_H
|
|
#define _GDIPLUSSTRINGFORMAT_H
|
|
|
|
class StringFormat : public GdiplusBase
|
|
{
|
|
public:
|
|
StringFormat(INT formatFlags = 0, LANGID language = LANG_NEUTRAL) : nativeFormat(NULL)
|
|
{
|
|
lastStatus = DllExports::GdipCreateStringFormat(formatFlags, language, &nativeFormat);
|
|
}
|
|
|
|
StringFormat(const StringFormat *format) : nativeFormat(NULL)
|
|
{
|
|
lastStatus = DllExports::GdipCloneStringFormat(format ? format->nativeFormat : NULL, &nativeFormat);
|
|
}
|
|
|
|
StringFormat *
|
|
Clone() const
|
|
{
|
|
GpStringFormat *cloneFormat = NULL;
|
|
|
|
lastStatus = DllExports::GdipCloneStringFormat(nativeFormat, &cloneFormat);
|
|
if (lastStatus != Ok)
|
|
return NULL;
|
|
|
|
StringFormat *newFormat = new StringFormat(cloneFormat, lastStatus);
|
|
if (!newFormat)
|
|
DllExports::GdipDeleteStringFormat(cloneFormat);
|
|
return newFormat;
|
|
}
|
|
|
|
~StringFormat()
|
|
{
|
|
DllExports::GdipDeleteStringFormat(nativeFormat);
|
|
}
|
|
|
|
static const StringFormat *
|
|
GenericDefault()
|
|
{
|
|
return NULL; // FIXME
|
|
}
|
|
|
|
static const StringFormat *
|
|
GenericTypographic()
|
|
{
|
|
return NULL; // FIXME
|
|
}
|
|
|
|
StringAlignment
|
|
GetAlignment() const
|
|
{
|
|
StringAlignment alignment;
|
|
SetStatus(DllExports::GdipGetStringFormatAlign(nativeFormat, &alignment));
|
|
return alignment;
|
|
}
|
|
|
|
LANGID
|
|
GetDigitSubstitutionLanguage() const
|
|
{
|
|
LANGID language;
|
|
SetStatus(DllExports::GdipGetStringFormatDigitSubstitution(nativeFormat, &language, NULL));
|
|
return language;
|
|
}
|
|
|
|
StringDigitSubstitute
|
|
GetDigitSubstitutionMethod() const
|
|
{
|
|
StringDigitSubstitute substitute;
|
|
SetStatus(DllExports::GdipGetStringFormatDigitSubstitution(nativeFormat, NULL, &substitute));
|
|
return substitute;
|
|
}
|
|
|
|
INT
|
|
GetFormatFlags() const
|
|
{
|
|
INT flags;
|
|
SetStatus(DllExports::GdipGetStringFormatFlags(nativeFormat, &flags));
|
|
return flags;
|
|
}
|
|
|
|
HotkeyPrefix
|
|
GetHotkeyPrefix() const
|
|
{
|
|
HotkeyPrefix hotkeyPrefix;
|
|
SetStatus(DllExports::GdipGetStringFormatHotkeyPrefix(nativeFormat, reinterpret_cast<INT *>(&hotkeyPrefix)));
|
|
return hotkeyPrefix;
|
|
}
|
|
|
|
Status
|
|
GetLastStatus() const
|
|
{
|
|
return lastStatus;
|
|
}
|
|
|
|
StringAlignment
|
|
GetLineAlignment() const
|
|
{
|
|
StringAlignment alignment;
|
|
SetStatus(DllExports::GdipGetStringFormatLineAlign(nativeFormat, &alignment));
|
|
return alignment;
|
|
}
|
|
|
|
INT
|
|
GetMeasurableCharacterRangeCount() const
|
|
{
|
|
INT count;
|
|
SetStatus(DllExports::GdipGetStringFormatMeasurableCharacterRangeCount(nativeFormat, &count));
|
|
return count;
|
|
}
|
|
|
|
INT
|
|
GetTabStopCount() const
|
|
{
|
|
INT count;
|
|
SetStatus(DllExports::GdipGetStringFormatTabStopCount(nativeFormat, &count));
|
|
return count;
|
|
}
|
|
|
|
Status
|
|
GetTabStops(INT count, REAL *firstTabOffset, REAL *tabStops) const
|
|
{
|
|
return SetStatus(DllExports::GdipGetStringFormatTabStops(nativeFormat, count, firstTabOffset, tabStops));
|
|
}
|
|
|
|
StringTrimming
|
|
GetTrimming() const
|
|
{
|
|
StringTrimming trimming;
|
|
SetStatus(DllExports::GdipGetStringFormatTrimming(nativeFormat, &trimming));
|
|
return trimming;
|
|
}
|
|
|
|
Status
|
|
SetAlignment(StringAlignment align)
|
|
{
|
|
return SetStatus(DllExports::GdipSetStringFormatAlign(nativeFormat, align));
|
|
}
|
|
|
|
Status
|
|
SetDigitSubstitution(LANGID language, StringDigitSubstitute substitute)
|
|
{
|
|
return SetStatus(DllExports::GdipSetStringFormatDigitSubstitution(nativeFormat, language, substitute));
|
|
}
|
|
|
|
Status
|
|
SetFormatFlags(INT flags)
|
|
{
|
|
return SetStatus(DllExports::GdipSetStringFormatFlags(nativeFormat, flags));
|
|
}
|
|
|
|
Status
|
|
SetHotkeyPrefix(HotkeyPrefix hotkeyPrefix)
|
|
{
|
|
return SetStatus(DllExports::GdipSetStringFormatHotkeyPrefix(nativeFormat, INT(hotkeyPrefix)));
|
|
}
|
|
|
|
Status
|
|
SetLineAlignment(StringAlignment align)
|
|
{
|
|
return SetStatus(DllExports::GdipSetStringFormatLineAlign(nativeFormat, align));
|
|
}
|
|
|
|
Status
|
|
SetMeasurableCharacterRanges(INT rangeCount, const CharacterRange *ranges)
|
|
{
|
|
return SetStatus(DllExports::GdipSetStringFormatMeasurableCharacterRanges(nativeFormat, rangeCount, ranges));
|
|
}
|
|
|
|
Status
|
|
SetTabStops(REAL firstTabOffset, INT count, const REAL *tabStops)
|
|
{
|
|
return SetStatus(DllExports::GdipSetStringFormatTabStops(nativeFormat, firstTabOffset, count, tabStops));
|
|
}
|
|
|
|
Status
|
|
SetTrimming(StringTrimming trimming)
|
|
{
|
|
return SetStatus(DllExports::GdipSetStringFormatTrimming(nativeFormat, trimming));
|
|
}
|
|
|
|
protected:
|
|
GpStringFormat *nativeFormat;
|
|
mutable Status lastStatus;
|
|
|
|
StringFormat(GpStringFormat *format, Status status) : nativeFormat(format), lastStatus(status)
|
|
{
|
|
}
|
|
|
|
Status
|
|
SetStatus(Status status) const
|
|
{
|
|
if (status != Ok)
|
|
lastStatus = status;
|
|
return status;
|
|
}
|
|
|
|
// get native
|
|
friend inline GpStringFormat *&
|
|
getNat(const StringFormat *sf)
|
|
{
|
|
return const_cast<StringFormat *>(sf)->nativeFormat;
|
|
}
|
|
};
|
|
|
|
#endif /* _GDIPLUSSTRINGFORMAT_H */
|