Jelajahi Sumber

added BitmapAlphaFormat that enables setting of alpha format that determines bitmap alpha pre-multiplication and enables alpha-blended painting of images

Honza Rames 10 tahun lalu
induk
melakukan
26680b8538
4 mengubah file dengan 17 tambahan dan 2 penghapusan
  1. 1 0
      Components/ScintStylerInnoSetup.pas
  2. 12 0
      Projects/Compile.pas
  3. 3 2
      Projects/Main.pas
  4. 1 0
      Projects/Struct.pas

+ 1 - 0
Components/ScintStylerInnoSetup.pas

@@ -130,6 +130,7 @@ type
     ssBackColor2,
     ssBackColor2,
     ssBackColorDirection,
     ssBackColorDirection,
     ssBackSolid,
     ssBackSolid,
+    ssBitmapAlphaFormat,
     ssChangesAssociations,
     ssChangesAssociations,
     ssChangesEnvironment,
     ssChangesEnvironment,
     ssCloseApplications,
     ssCloseApplications,

+ 12 - 0
Projects/Compile.pas

@@ -89,6 +89,7 @@ type
     ssBackColor2,
     ssBackColor2,
     ssBackColorDirection,
     ssBackColorDirection,
     ssBackSolid,
     ssBackSolid,
+    ssBitmapAlphaFormat,
     ssChangesAssociations,
     ssChangesAssociations,
     ssChangesEnvironment,
     ssChangesEnvironment,
     ssCloseApplications,
     ssCloseApplications,
@@ -3684,6 +3685,16 @@ begin
     ssBackSolid: begin
     ssBackSolid: begin
         BackSolid := StrToBool(Value);
         BackSolid := StrToBool(Value);
       end;
       end;
+    ssBitmapAlphaFormat: begin
+        if CompareText(Value, 'none') = 0 then
+          SetupHeader.BitmapAlphaFormat := afIgnored
+        else if CompareText(Value, 'defined') = 0 then
+          SetupHeader.BitmapAlphaFormat := afDefined
+        else if CompareText(Value, 'premultiplied') = 0 then
+          SetupHeader.BitmapAlphaFormat := afPremultiplied
+        else
+          Invalid;
+    end;
     ssChangesAssociations: begin
     ssChangesAssociations: begin
         SetSetupHeaderOption(shChangesAssociations);
         SetSetupHeaderOption(shChangesAssociations);
       end;
       end;
@@ -8309,6 +8320,7 @@ begin
     SetupHeader.DefaultUserInfoOrg := '{sysuserinfoorg}';
     SetupHeader.DefaultUserInfoOrg := '{sysuserinfoorg}';
     SetupHeader.BackColor := clBlue;
     SetupHeader.BackColor := clBlue;
     SetupHeader.BackColor2 := clBlack;
     SetupHeader.BackColor2 := clBlack;
+    SetupHeader.BitmapAlphaFormat := afIgnored;
     SetupHeader.DisableDirPage := dpAuto;
     SetupHeader.DisableDirPage := dpAuto;
     SetupHeader.DisableProgramGroupPage := dpAuto;
     SetupHeader.DisableProgramGroupPage := dpAuto;
     SetupHeader.CreateUninstallRegKey := 'yes';
     SetupHeader.CreateUninstallRegKey := 'yes';

+ 3 - 2
Projects/Main.pas

@@ -250,7 +250,7 @@ uses
   Compress, CompressZlib, bzlib, LZMADecomp, ArcFour, SetupEnt, SelLangForm,
   Compress, CompressZlib, bzlib, LZMADecomp, ArcFour, SetupEnt, SelLangForm,
   Wizard, DebugClient, VerInfo, Extract, FileClass, Logging, MD5, SHA1,
   Wizard, DebugClient, VerInfo, Extract, FileClass, Logging, MD5, SHA1,
   {$IFNDEF Delphi3orHigher} OLE2, {$ELSE} ActiveX, {$ENDIF}
   {$IFNDEF Delphi3orHigher} OLE2, {$ELSE} ActiveX, {$ENDIF}
-  SimpleExpression, Helper, SpawnClient, SpawnServer, LibFusion;
+  SimpleExpression, Helper, SpawnClient, SpawnServer, LibFusion, BitmapImage;
 
 
 {$R *.DFM}
 {$R *.DFM}
 
 
@@ -2557,7 +2557,8 @@ var
     try
     try
       ReadFileIntoStream(MemStream, R);
       ReadFileIntoStream(MemStream, R);
       MemStream.Seek(0, soFromBeginning);
       MemStream.Seek(0, soFromBeginning);
-      WizardImage := TBitmap.Create;
+      WizardImage := TAlphaBitmap.Create;
+      TAlphaBitmap(WizardImage).AlphaFormat := TAlphaFormat(SetupHeader.BitmapAlphaFormat);
       WizardImage.LoadFromStream(MemStream);
       WizardImage.LoadFromStream(MemStream);
     finally
     finally
       MemStream.Free;
       MemStream.Free;

+ 1 - 0
Projects/Struct.pas

@@ -100,6 +100,7 @@ type
       NumRunEntries, NumUninstallRunEntries: Integer;
       NumRunEntries, NumUninstallRunEntries: Integer;
     MinVersion, OnlyBelowVersion: TSetupVersionData;
     MinVersion, OnlyBelowVersion: TSetupVersionData;
     BackColor, BackColor2, WizardImageBackColor: Longint;
     BackColor, BackColor2, WizardImageBackColor: Longint;
+    BitmapAlphaFormat: (afIgnored, afDefined, afPremultiplied); // Same as Graphics.TAlphaFormat
     PasswordHash: TSHA1Digest;
     PasswordHash: TSHA1Digest;
     PasswordSalt: TSetupSalt;
     PasswordSalt: TSetupSalt;
     ExtraDiskSpaceRequired: Integer64;
     ExtraDiskSpaceRequired: Integer64;