123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "Global.h"
- #include "Glyphs.h"
- #include "Glyphs120.h"
- #include "Glyphs144.h"
- #include "Glyphs192.h"
- #include "Common.h"
- #include "GUITools.h"
- #include "GUIConfiguration.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "PngImageList"
- #pragma resource "*.dfm"
- //---------------------------------------------------------------------------
- TGlyphsModule * GlyphsModule;
- //---------------------------------------------------------------------------
- __fastcall TGlyphsModule::TGlyphsModule(TComponent* Owner)
- : TDataModule(Owner)
- {
- FPixelsPerInch = USER_DEFAULT_SCREEN_DPI;
- FLargerToolbar = 0;
- SetPixelsPerInch(Screen->PixelsPerInch);
- }
- //---------------------------------------------------------------------------
- // Constructor without scaling
- __fastcall TGlyphsModule::TGlyphsModule()
- : TDataModule(Application)
- {
- }
- //---------------------------------------------------------------------------
- void TGlyphsModule::SetPixelsPerInch(int PixelsPerInch)
- {
- int BasePixelsPerInch = NormalizePixelsPerInch(PixelsPerInch);
- if (FBasePixelsPerInch != BasePixelsPerInch)
- {
- FBasePixelsPerInch = BasePixelsPerInch;
- UpdatePixelsPerInch();
- }
- }
- //---------------------------------------------------------------------------
- void TGlyphsModule::SetLargerToolbar(int LargerToolbar)
- {
- if (FLargerToolbar != LargerToolbar)
- {
- FLargerToolbar = LargerToolbar;
- UpdatePixelsPerInch();
- }
- }
- //---------------------------------------------------------------------------
- bool TGlyphsModule::IsLargerToolbarPossible(int Larger)
- {
- int Prev = LargerPixelsPerInch(FBasePixelsPerInch, Larger - 1);
- return (LargerPixelsPerInch(Prev, 1) > Prev);
- }
- //---------------------------------------------------------------------------
- void TGlyphsModule::UpdatePixelsPerInch()
- {
- HANDLE ResourceModule = GUIConfiguration->ChangeToDefaultResourceModule();
- try
- {
- int PixelsPerInch = LargerPixelsPerInch(FBasePixelsPerInch, FLargerToolbar);
- if (FPixelsPerInch != PixelsPerInch)
- {
- std::unique_ptr<TDataModule> ScaledModule;
- if (PixelsPerInch >= 192)
- {
- ScaledModule.reset(new TGlyphs192Module(Application));
- }
- else if (PixelsPerInch >= 144)
- {
- ScaledModule.reset(new TGlyphs144Module(Application));
- }
- else if (PixelsPerInch >= 120)
- {
- ScaledModule.reset(new TGlyphs120Module(Application));
- }
- else
- {
- // Do not have a separate 96 DPI module, as this module needs to
- // have the images loaded as they are used on design time.
- // Performance impact of loading 96 DPI images when they are not needed is not that big.
- ScaledModule.reset(new TGlyphsModule());
- }
- if (ScaledModule.get() != NULL)
- {
- for (int Index = 0; Index < ComponentCount; Index++)
- {
- TComponent * TargetComponent = Components[Index];
- TComponent * SourceComponent = ScaledModule->FindComponent(TargetComponent->Name);
- if (DebugAlwaysTrue(SourceComponent != NULL))
- {
- TargetComponent->Assign(SourceComponent);
- }
- }
- }
- FPixelsPerInch = PixelsPerInch;
- }
- }
- __finally
- {
- GUIConfiguration->ChangeResourceModule(ResourceModule);
- }
- }
|