166 lines
3.5 KiB
C
166 lines
3.5 KiB
C
|
//-----------------------------------------------------------------------------
|
||
|
//
|
||
|
// File: binary.h
|
||
|
// Copyright (C) 1994-1997 Microsoft Corporation
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
//
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
#ifndef ESPUTIL_BINARY_H
|
||
|
#define ESPUTIL_BINARY_H
|
||
|
|
||
|
|
||
|
//
|
||
|
// Base class for binary classes. This allows serialization
|
||
|
// of arbitrary data.
|
||
|
//
|
||
|
|
||
|
class CLocVariant;
|
||
|
class CLocItem;
|
||
|
|
||
|
#pragma warning(disable: 4275) // non dll-interface class 'foo' used
|
||
|
// as base for dll-interface class 'bar'
|
||
|
|
||
|
class LTAPIENTRY CLocBinary : public CObject
|
||
|
{
|
||
|
public:
|
||
|
CLocBinary();
|
||
|
|
||
|
virtual void AssertValid(void) const;
|
||
|
|
||
|
//
|
||
|
// Serialization routines. Supports serialization withour dynamic creation
|
||
|
//
|
||
|
virtual void Serialize(CArchive &archive); //Afx serialize function
|
||
|
|
||
|
//
|
||
|
// Result code for comparing one binary class from another.
|
||
|
//
|
||
|
enum CompareCode
|
||
|
{
|
||
|
noChange,
|
||
|
partialChange, //Only non-localizable data changed
|
||
|
fullChange //Localizable data changed
|
||
|
};
|
||
|
virtual CompareCode Compare (const CLocBinary *) = 0;
|
||
|
|
||
|
// Called to update the non-localizable data - Used when compare returns
|
||
|
// partialChange
|
||
|
|
||
|
virtual void PartialUpdate(const CLocBinary * binSource) = 0;
|
||
|
|
||
|
enum Alignment
|
||
|
{
|
||
|
a_Default,
|
||
|
a_Left,
|
||
|
a_Center,
|
||
|
a_Right,
|
||
|
a_Top,
|
||
|
a_VCenter,
|
||
|
a_Bottom
|
||
|
};
|
||
|
|
||
|
//
|
||
|
// The universe of possible binary properties that may be queried for.
|
||
|
// This order must NOT change, or you may break old parsers! Put new
|
||
|
// properties at the end.
|
||
|
//
|
||
|
enum Property
|
||
|
{
|
||
|
//
|
||
|
// Native formats..
|
||
|
//
|
||
|
p_dwXPosition,
|
||
|
p_dwYPosition,
|
||
|
p_dwXDimension,
|
||
|
p_dwYDimension,
|
||
|
p_dwAlignment,
|
||
|
p_blbNativeImage,
|
||
|
|
||
|
p_dwFontSize,
|
||
|
p_pasFontName,
|
||
|
p_dwFontWeight,
|
||
|
p_dwFontStyle,
|
||
|
|
||
|
//
|
||
|
// Interchange formats..
|
||
|
//
|
||
|
p_dwWin32XPosition,
|
||
|
p_dwWin32YPosition,
|
||
|
p_dwWin32XDimension,
|
||
|
p_dwWin32YDimension,
|
||
|
p_dwWin32Alignment, // Use Alignment enum
|
||
|
p_dwWin32ExtAlignment, // Extended - Use Alignment enum
|
||
|
p_blbWin32Bitmap,
|
||
|
p_blbWin32DialogInit,
|
||
|
|
||
|
//
|
||
|
// Generic - usable both for Native and Interchange
|
||
|
//
|
||
|
p_bVisible, // Is the item visable?
|
||
|
p_bDisabled, // Is the item disabled?
|
||
|
p_bLTRReadingOrder, // Is the reading order L to R?
|
||
|
p_bLeftScrollBar, // Scroll bar on left?
|
||
|
|
||
|
//
|
||
|
// "Styles" tab for dialog controls.
|
||
|
//
|
||
|
p_bLeftText, // Display text to left of control?
|
||
|
|
||
|
|
||
|
p_bWin32LTRLayout, // WS_EX_LAYOUT_RTL
|
||
|
p_bWin32NoInheritLayout, // WS_EX_NOINHERIT_LAYOUT
|
||
|
|
||
|
p_dwWin32VAlignment, // Use Alignment enum
|
||
|
|
||
|
// Insert new entries here
|
||
|
};
|
||
|
|
||
|
virtual BOOL GetProp(const Property, CLocVariant &) const;
|
||
|
virtual BOOL SetProp(const Property, const CLocVariant &);
|
||
|
|
||
|
//
|
||
|
// Attempts to convert CBinary in CLocItem to same type as this
|
||
|
//
|
||
|
virtual BOOL Convert(CLocItem *);
|
||
|
virtual BinaryId GetBinaryId(void) const = 0;
|
||
|
|
||
|
virtual ~CLocBinary();
|
||
|
|
||
|
BOOL NOTHROW GetFBinaryDirty(void) const;
|
||
|
BOOL NOTHROW GetFPartialUpdateBinary(void) const;
|
||
|
void NOTHROW SetFBinaryDirty(BOOL);
|
||
|
void NOTHROW SetFPartialUpdateBinary(BOOL);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
private:
|
||
|
//
|
||
|
// Copy constructor and assignment are hidden, since we
|
||
|
// shouldn't be copying these things around.
|
||
|
//
|
||
|
CLocBinary(const CLocBinary &);
|
||
|
const CLocBinary& operator=(const CLocBinary &);
|
||
|
//
|
||
|
// These allow a user to determine what parts of the item have been
|
||
|
// changed.
|
||
|
//
|
||
|
struct Flags
|
||
|
{
|
||
|
BOOL m_fBinaryDirty :1;
|
||
|
BOOL m_fPartialUpdateBinary :1;
|
||
|
};
|
||
|
|
||
|
Flags m_Flags;
|
||
|
};
|
||
|
|
||
|
#pragma warning(default: 4275)
|
||
|
|
||
|
#include "binary.inl"
|
||
|
|
||
|
|
||
|
#endif
|