diff --git a/tim2view.lpi b/tim2view.lpi index d678536..4e1bcd8 100644 --- a/tim2view.lpi +++ b/tim2view.lpi @@ -260,7 +260,6 @@ - @@ -270,27 +269,22 @@ - - - - - @@ -308,7 +302,6 @@ - diff --git a/tim2view.lpr b/tim2view.lpr index 9363cb8..f112849 100644 --- a/tim2view.lpr +++ b/tim2view.lpr @@ -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); diff --git a/udrawtim.pas b/udrawtim.pas index 7cc86f0..6c70361 100644 --- a/udrawtim.pas +++ b/udrawtim.pas @@ -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. diff --git a/umain.pas b/umain.pas index 7e9b7a3..688caaa 100644 --- a/umain.pas +++ b/umain.pas @@ -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. diff --git a/utim.pas b/utim.pas index 4577ea4..37153d4 100644 --- a/utim.pas +++ b/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;