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