Trying to fix CLUT repaint.
This commit is contained in:
@@ -260,7 +260,6 @@
|
||||
<Unit4>
|
||||
<Filename Value="ucommon.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="ucommon"/>
|
||||
</Unit4>
|
||||
<Unit5>
|
||||
<Filename Value="utim.pas"/>
|
||||
@@ -270,27 +269,22 @@
|
||||
<Unit6>
|
||||
<Filename Value="ucdimage.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="ucdimage"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
<Filename Value="usettings.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="usettings"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="uscanresult.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uscanresult"/>
|
||||
</Unit8>
|
||||
<Unit9>
|
||||
<Filename Value="uscanthread.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uscanthread"/>
|
||||
</Unit9>
|
||||
<Unit10>
|
||||
<Filename Value="ucpucount.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="ucpucount"/>
|
||||
</Unit10>
|
||||
<Unit11>
|
||||
<Filename Value="udrawtim.pas"/>
|
||||
@@ -308,7 +302,6 @@
|
||||
<Unit14>
|
||||
<Filename Value="uexportimport.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uexportimport"/>
|
||||
</Unit14>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
|
||||
@@ -6,11 +6,15 @@ uses
|
||||
{$IFDEF UNIX}
|
||||
cthreads, cmem,
|
||||
{$ENDIF}
|
||||
Forms, umain, Interfaces;
|
||||
Forms, umain, Interfaces,
|
||||
Windows;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
AllocConsole; // in Windows unit
|
||||
IsConsole := True; // in System unit
|
||||
SysInitStdIO; // in System unit
|
||||
RequireDerivedFormResource := True;
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TfrmMain, frmMain);
|
||||
|
||||
@@ -324,6 +324,7 @@ var
|
||||
COLS, Colors: Integer;
|
||||
FC: TFPColor;
|
||||
begin
|
||||
//Writeln('X=',X, '; Y=',Y);
|
||||
Colors := GetTimColorsCount(TIM);
|
||||
COLS := Min(Colors, 32);
|
||||
Rect := Grid^.CellRect(X, Y);
|
||||
@@ -378,12 +379,16 @@ begin
|
||||
|
||||
Grid^.RowCount := ROWS;
|
||||
|
||||
(*
|
||||
//Grid^.BeginUpdate;
|
||||
for Y := 1 to ROWS do
|
||||
for X := 1 to COLS do
|
||||
begin
|
||||
//ClearCanvas(@Grid^.Canvas, Grid^.CellRect(X - 1, Y - 1));
|
||||
DrawClutCell(TIM, CLUT_NUM, Grid, X - 1, Y - 1);
|
||||
end;
|
||||
//Grid^.EndUpdate(true); *)
|
||||
//Grid^.Repaint;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
@@ -660,7 +660,7 @@ begin
|
||||
FreeTIM(TIM);
|
||||
Exit;
|
||||
end;
|
||||
|
||||
//Writeln('X=',aCol, '; Y=',aRow);
|
||||
DrawClutCell(TIM, cbbCLUT.ItemIndex, @grdClut, ACol, ARow);
|
||||
|
||||
FreeTIM(TIM);
|
||||
@@ -1055,7 +1055,11 @@ procedure TfrmMain.UpdateTim(Tim, Clut, ClutInfo: Boolean);
|
||||
begin
|
||||
if ClutInfo then UpdateCLUTInfo;
|
||||
if Tim then DrawSelTim;
|
||||
if Clut then DrawSelClut;
|
||||
if Clut then
|
||||
begin
|
||||
DrawSelClut;
|
||||
grdClut.Repaint;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
27
utim.pas
27
utim.pas
@@ -106,6 +106,9 @@ type
|
||||
dwSize: Integer;
|
||||
DATA: PTIMDataArray;
|
||||
OverBpp: Integer;
|
||||
UseExtClut: Boolean;
|
||||
ExtCLUT: PCLUTHeader;
|
||||
ExtCLUT_DATA: PCLUT_COLORS;
|
||||
end;
|
||||
|
||||
PTIM = ^TTIM;
|
||||
@@ -174,12 +177,13 @@ begin
|
||||
Exit;
|
||||
end;
|
||||
|
||||
COLOR := 0;
|
||||
CLUT_OFFSET := CLUT_NUM * GetTimColorsCount(TIM) * 2;
|
||||
|
||||
if (not TIM^.UseExtClut) then
|
||||
Move(TIM^.DATA^[SizeOf(TTIMHeader) + SizeOf(TCLUTHeader) + COLOR_NUM * 2 + CLUT_OFFSET], COLOR, 2)
|
||||
if (TIM^.UseExtClut) then
|
||||
Move(TIM^.ExtCLUT_DATA^[COLOR_NUM * 2 + CLUT_OFFSET], COLOR, sizeof(TCLUT_COLOR))
|
||||
else
|
||||
Move(TIM^.ExtCLUT_DATA^[COLOR_NUM * 2 + CLUT_OFFSET], COLOR, sizeof(TCLUT_COLOR));
|
||||
Move(TIM^.DATA^[SizeOf(TTIMHeader) + SizeOf(TCLUTHeader) + COLOR_NUM * 2 + CLUT_OFFSET], COLOR, 2);
|
||||
|
||||
Result := ConvertTIMColor(COLOR);
|
||||
end;
|
||||
@@ -414,6 +418,10 @@ begin
|
||||
|
||||
Move(PBytesArray(BUFFER)^[TIM_POS], TIM^.DATA^[0], TIM^.dwSize);
|
||||
|
||||
TIM^.UseExtClut := False;
|
||||
TIM^.ExtCLUT := nil;
|
||||
TIM^.ExtCLUT_DATA := nil;
|
||||
|
||||
TIM^.OverBpp := TIM^.HEAD^.bBPP;
|
||||
Result := True;
|
||||
end;
|
||||
@@ -539,6 +547,9 @@ begin
|
||||
Result^.dwTimPosition := 0;
|
||||
Result^.dwTimNumber := 0;
|
||||
Result^.OverBpp := -1;
|
||||
Result^.UseExtClut := False;
|
||||
Result^.ExtCLUT := nil;
|
||||
Result^.ExtCLUT_DATA := nil;
|
||||
New(Result^.DATA);
|
||||
ClearTIM(Result);
|
||||
end;
|
||||
@@ -603,7 +614,7 @@ end;
|
||||
|
||||
function GetTimColorsCount(TIM: PTIM): word;
|
||||
begin
|
||||
if (not TIM^.UseExtClut) then
|
||||
if (TIM^.UseExtClut) then
|
||||
Result := TIM^.ExtCLUT^.wColorsCount
|
||||
else
|
||||
Result := TIM^.CLUT^.wColorsCount;
|
||||
@@ -611,7 +622,7 @@ end;
|
||||
|
||||
function GetTimClutsCount(TIM: PTIM): word;
|
||||
begin
|
||||
if (not TIM^.UseExtClut) then
|
||||
if (TIM^.UseExtClut) then
|
||||
Result := TIM^.ExtCLUT^.wClutsCount
|
||||
else
|
||||
Result := TIM^.CLUT^.wClutsCount;
|
||||
@@ -624,7 +635,7 @@ end;
|
||||
|
||||
function GetTimClutSizeHeader(TIM: PTIM): Integer;
|
||||
begin
|
||||
if (not TIM^.UseExtClut) then
|
||||
if (TIM^.UseExtClut) then
|
||||
Result := TIM^.ExtCLUT^.dwSize
|
||||
else
|
||||
Result := TIM^.CLUT^.dwSize;
|
||||
@@ -632,7 +643,7 @@ end;
|
||||
|
||||
function GetTimClutVRAMX(TIM: PTIM): word;
|
||||
begin
|
||||
if (not TIM^.UseExtClut) then
|
||||
if (TIM^.UseExtClut) then
|
||||
Result := TIM^.ExtCLUT^.wVRAMX
|
||||
else
|
||||
Result := TIM^.CLUT^.wVRAMX;
|
||||
@@ -640,7 +651,7 @@ end;
|
||||
|
||||
function GetTimClutVRAMY(TIM: PTIM): word;
|
||||
begin
|
||||
if (not TIM^.UseExtClut) then
|
||||
if (TIM^.UseExtClut) then
|
||||
Result := TIM^.ExtCLUT^.wVRAMY
|
||||
else
|
||||
Result := TIM^.CLUT^.wVRAMY;
|
||||
|
||||
Reference in New Issue
Block a user