Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
COPaper verpakt de penkleur, breedte en coördinaten in INKDATA structuren en slaat deze op in een dynamisch toegewezen matrix die in het geheugen wordt beheerd.
INKDATA-structuur
Hier volgen de declaraties voor de INKDATA structuur van PAPER.H.
// The types of Ink Data.
#define INKTYPE_NONE 0
#define INKTYPE_START 1
#define INKTYPE_DRAW 2
#define INKTYPE_STOP 3
// The Ink Data structure.
typedef struct _INKDATA
{
SHORT nType; // Ink Type.
SHORT nX; // X-coordinate of ink point.
SHORT nY; // Y-coordinate of ink point.
SHORT nWidth; // Ink line width in pixels.
COLORREF crColor; // Ink color.
} INKDATA;
De dynamische matrix van deze INKDATA--pakketten wordt verwezen door m_paInkData, lid van de IPaper--implementatieklasse. De matrix wordt gemaakt in de IPaper::InitPaper methode met een initiële toewijzing. Zie de methode InitPaper en de private NextSlot-methode van de CImpIPaper-implementatie in PAPER.H voor meer informatie. De InkStart, InkDrawen InkStop methoden gebruiken NextSlot om nieuwe sleuven in de matrix te verkrijgen. De matrix wordt dynamisch uitgebreid door NextSlot naarmate de behoefte zich voordoet.
De client roept de IPaper::Gum methode aan om de huidige tekening te wissen. Met deze methode wordt de matrix niet opnieuw toegeroepen; hiermee worden alle huidige inktgegevens gemarkeerd als INKTYPE_NONE en wordt de end-of-data-index van de matrix opnieuw ingesteld op nul.
De client roept de IPaper::Lock aan en Ontgrendel methoden om het eigendom van COPaper voor tekenen te beheren. Deze methoden worden geboden voor het organiseren van toegang tussen meerdere clients tot de tekening die is opgeslagen in een gedeelde COPaper.
PAPER_PROPERTIES structuur
De client roept de methode IPaper::Resize aan om COPaper te laten weten dat de gebruiker het formaat van de huidige rechthoek voor tekenpapier heeft gewijzigd. Deze coördinaatgegevens worden bewaard in een PAPER_PROPERTIES structuur, die wordt opgeslagen met de inktgegevens wanneer alle papiergegevens worden opgeslagen in een samengesteld bestand.
Hier volgt de declaratie PAPER_PROPERTIES van PAPER.H.
#define PAPER_TITLE_SIZE 64
typedef struct _PAPER_PROPERTIES
{
LONG lInkDataVersion;
LONG lInkArraySize;
COLORREF crWinColor;
RECT WinRect;
WCHAR wszTitle[PAPER_TITLE_SIZE];
WCHAR wszAuthor[PAPER_TITLE_SIZE];
WCHAR wszReserved1[PAPER_TITLE_SIZE];
WCHAR wszReserved2[PAPER_TITLE_SIZE];
} PAPER_PROPERTIES;
De PAPER_PROPERTIES structuur is zodanig ontworpen dat nieuwe gegevensindelingen voor inkt op elk gewenst moment kunnen worden toegevoegd naarmate het DllPaper-onderdeel zich ontwikkelt. De IPaper-interface is algemeen genoeg dat een volgende versie van het DllPaper-onderdeel een andere inktgegevensindeling kan opslaan tijdens het implementeren van dezelfde IPaper-interface. Omdat de methoden van IPaper- niet afhankelijk zijn van een specifieke inktgegevensindeling, kan een nieuwe versie van het DllPaper-onderdeel dat wel een andere inktgegevensindeling ondersteunt dezelfde interface gebruiken.
De papiereigenschappen die zijn opgeslagen in een samengesteld bestand, registreren de huidige grootte van de inktgegevensmatrix. De juiste matrixgrootte kan vervolgens worden toegewezen voor de inktgegevens die uit het bestand worden gelezen.
De PAPER_PROPERTIES structuur slaat ook de tekenrechthoekgrootte van het papieroppervlak en de achtergrondvensterkleur op.
Hoewel deze niet wordt gebruikt in de StoServe/StoClien voorbeelden, kunnen ook een tekentitel en een naam van de auteur worden opgeslagen.
De aanmaakdatum en de laatst gewijzigde datums zijn niet opgenomen in deze papiereigenschappen, omdat de IStorage-interface die wordt gebruikt voor toegang tot samengestelde bestanden deze informatie beheert.