You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.2 KiB
139 lines
3.2 KiB
/**************************************************************************\
|
|
*
|
|
* Copyright (c) 2000 Microsoft Corporation
|
|
*
|
|
* Module Name:
|
|
*
|
|
* fontcollection.cpp
|
|
*
|
|
* Revision History:
|
|
*
|
|
* 03/06/00 DChinn
|
|
* Created it.
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#include "precomp.hpp"
|
|
|
|
|
|
INT
|
|
GpFontCollection::GetFamilyCount()
|
|
{
|
|
if (!FontTable->IsPrivate() && !FontTable->IsFontLoaded())
|
|
FontTable->LoadAllFonts();
|
|
|
|
return FontTable->EnumerableFonts();
|
|
}
|
|
|
|
|
|
GpStatus
|
|
GpFontCollection::GetFamilies(
|
|
INT numSought,
|
|
GpFontFamily* gpfamilies[],
|
|
INT* numFound
|
|
)
|
|
{
|
|
if (!FontTable->IsPrivate() && !FontTable->IsFontLoaded())
|
|
FontTable->LoadAllFonts();
|
|
return FontTable->EnumerateFonts(numSought, gpfamilies, *numFound);
|
|
}
|
|
|
|
GpInstalledFontCollection::GpInstalledFontCollection()
|
|
{
|
|
FontTable = new GpFontTable;
|
|
|
|
if (FontTable != NULL)
|
|
{
|
|
/* verify if we were running out of memory during the creation */
|
|
if (!FontTable->IsValid())
|
|
{
|
|
delete FontTable;
|
|
FontTable = NULL;
|
|
}
|
|
else
|
|
{
|
|
FontTable->SetPrivate(FALSE);
|
|
}
|
|
}
|
|
}
|
|
|
|
GpInstalledFontCollection::~GpInstalledFontCollection()
|
|
{
|
|
delete FontTable;
|
|
instance = NULL;
|
|
}
|
|
|
|
// definition of static data member of the singleton class GpInstalledFontCollection
|
|
GpInstalledFontCollection* GpInstalledFontCollection::instance = NULL;
|
|
|
|
GpInstalledFontCollection* GpInstalledFontCollection::GetGpInstalledFontCollection()
|
|
{
|
|
if (instance == NULL)
|
|
{
|
|
instance = new GpInstalledFontCollection;
|
|
|
|
/* verify if there was any memory error during the creation */
|
|
if (instance != NULL)
|
|
{
|
|
if (instance->FontTable == NULL)
|
|
{
|
|
delete instance;
|
|
instance = NULL;
|
|
}
|
|
}
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
|
|
GpStatus
|
|
GpInstalledFontCollection::InstallFontFile(const WCHAR *filename)
|
|
{
|
|
return (FontTable->AddFontFile(filename, this));
|
|
}
|
|
|
|
GpStatus
|
|
GpInstalledFontCollection::UninstallFontFile(const WCHAR *filename)
|
|
{
|
|
return (FontTable->RemoveFontFile(filename));
|
|
}
|
|
|
|
|
|
GpPrivateFontCollection::GpPrivateFontCollection()
|
|
{
|
|
FontTable = new GpFontTable;
|
|
if (FontTable != NULL)
|
|
{
|
|
/* verify if we were running out of memory during the creation */
|
|
if (!FontTable->IsValid())
|
|
{
|
|
delete FontTable;
|
|
FontTable = NULL;
|
|
}
|
|
else
|
|
{
|
|
FontTable->SetPrivate(TRUE);
|
|
FontTable->SetFontFileLoaded(TRUE);
|
|
}
|
|
}
|
|
}
|
|
|
|
GpPrivateFontCollection::~GpPrivateFontCollection()
|
|
{
|
|
delete FontTable;
|
|
}
|
|
|
|
GpStatus
|
|
GpPrivateFontCollection::AddFontFile(const WCHAR* filename)
|
|
{
|
|
return (FontTable->AddFontFile(filename, this));
|
|
}
|
|
|
|
GpStatus
|
|
GpPrivateFontCollection::AddMemoryFont(const VOID *memory, INT length)
|
|
{
|
|
return (FontTable->AddFontMemImage(static_cast<const BYTE *>(memory),
|
|
length,
|
|
this));
|
|
}
|
|
|