//Advanced Delphi Systems Code: ads_ILSkyDoc
unit ads_ILSkyDoc;
{Copyright(c)2016 Advanced Delphi Systems

 Richard Maley
 Advanced Delphi Systems
 12613 Maidens Bower Drive
 Potomac, MD 20854 USA
 phone 301-840-1554
 dickmaley@advdelphisys.com

 The code herein can be used or modified by anyone.  Please retain references
 to Richard Maley at Advanced Delphi Systems.  If you make improvements to the
 code please send your improvements to dickmaley@advdelphisys.com so that the
 entire Delphi community can benefit.  All comments are welcome.
}
(*
UnitIndex Master Index Implementation Section Download Units
Description: ads_ILSkyDoc.pas
This unit contains the following routines.

ads_ILDoc_ESAInitCreate   ads_ILDoc_GoToBottomLeft   ads_ILDoc_GoToBottomRight  ads_ILDoc_GoToTopLeft   ads_ILDoc_GoToTopRight   ads_ILDoc_HideViewer   ads_ILDoc_ReadTifFile   ads_ILDoc_ShowViewer  

*)
interface
Uses Windows, Oasis_g, ILDocImg, SysUtils, skuimg, Forms, DllSP96, Dll96v1,
Oasis_p, Controls, FileCtrl;

procedure ads_ILDoc_ReadTifFile(IL: ILDocumentImage;FileName: TFileName;Page: SmallInt;Resolution: SmallInt);
procedure ads_ILDoc_GoToBottomLeft(IL: ILDocumentImage);
procedure ads_ILDoc_GoToTopRight(IL: ILDocumentImage);
procedure ads_ILDoc_GoToTopLeft(IL: ILDocumentImage);
procedure ads_ILDoc_GoToBottomRight(IL: ILDocumentImage);
Procedure ads_ILDoc_ESAInitCreate(Var Doc_MainForm: TDoc_MainForm; IsVisible: Boolean);
Procedure ads_ILDoc_ShowViewer(Var Doc_MainForm: TDoc_MainForm);
Procedure ads_ILDoc_HideViewer(Var Doc_MainForm: TDoc_MainForm);


Var
  ads_ILDoc_FileName            : TFileName;
  ads_ILDoc_FileNamePath        : String;
  ads_ILDoc_FileNameNoPath      : String;
  ads_ILDoc_FileNameNoPathOrExt : String;
  ads_ILDoc_ImageLoaded         : Boolean;
  ads_ILDoc_Page                : SmallInt;
  ads_ILDoc_Resolution          : SmallInt;
  ads_ILDoc_Tiff_BPP            : SmallInt;
  ads_ILDoc_Tiff_Compression    : String;
  ads_ILDoc_Tiff_Height         : LongInt;
  ads_ILDoc_Tiff_Page           : Integer;
  ads_ILDoc_Tiff_Pages          : SmallInt;
  ads_ILDoc_Tiff_Width          : LongInt;

implementation

Uses dm_ViewerNav;

Const
  UnitName = 'ads_ILSkyDoc';

//
Unit Description UnitIndex Master Index
procedure ads_ILDoc_ReadTifFile(
  IL         : ILDocumentImage;
  FileName   : TFileName;
  Page       : SmallInt;
  Resolution : SmallInt);
Var
  ProcName        : String;
  inPosPeriod     : Integer;
  Cursor          : TCursor;
  //For SkyDocImage Compatibility
  PageNum         : LongInt;
  fim_Width       : LongInt;  //@# January 18 1998 Changed from Smallint to Longint
  fim_Height      : LongInt;  //@# January 18 1998 Changed from Smallint to Longint
  fim_BPP         : SmallInt;
  fim_TiffPages   : SmallInt;
  fim_Compression : String;
Begin
  ProcName := 'ads_ILDoc_ReadTifFile';
  Cursor   := Screen.Cursor;
  Try
    Try
      //Start For SkyDocImage Compatibility
      Doc_MainForm.Image3.Visible:=False;
      Doc_MainForm.Save1.Enabled:=False;
      Doc_MainForm.cWait;
      Doc_MainForm.CheckUsedFilename(Doc_MainForm.sFileName);
      Doc_MainForm.CanPaint:=False;
      Doc_MainForm.DefaultDir := GlobalCacheDir;
      //Delete any existing thumbs and memory files if any
      Doc_MainForm.FreeAllItemsAndPackList;
      //Reset pagenumber to 0
      PageNum := Page;
      //reset no. of pages to 0
      Doc_MainForm.Pages :=0;
      //Set filename
      Doc_MainForm.sFileName := FileName;
      Doc_MainForm.checkusedfile(Doc_MainForm.sFileName ,PageNum );
      //Set filename
      Doc_MainForm.MFilename := Doc_MainForm.sFileName;
      //get file info
      GetTiffInfo(
        Doc_MainForm.MFilename,
        0,
        fim_Width,
        fim_Height,
        fim_Compression,
        fim_TiffPages,
        fim_BPP);
      //reset page number when pages difference from before
      If PageNum > fim_TiffPages Then PageNum:=0;
      //End For SkyDocImage Compatibility

      ads_ILDoc_FileName            := FileName;
      ads_ILDoc_FileNamePath        := ExtractFilePath(ads_ILDoc_FileName);
      If Copy(ads_ILDoc_FileNamePath,Length(ads_ILDoc_FileNamePath),1) <> '\' Then
        ads_ILDoc_FileNamePath := ads_ILDoc_FileNamePath + '\';
      ads_ILDoc_FileNameNoPath      := ExtractFileName(ads_ILDoc_FileName);
      inPosPeriod := Pos('.',ads_ILDoc_FileNameNoPath);
      If inPosPeriod > 0 Then
      Begin
        ads_ILDoc_FileNameNoPathOrExt :=
          Copy(ads_ILDoc_FileNameNoPath,1,inPosPeriod-1);
      End
      Else
      Begin
        ads_ILDoc_FileNameNoPathOrExt := ads_ILDoc_FileNameNoPath;
      End;
      If UpperCase(ads_ILDoc_FileNameNoPathOrExt) = 'BLANK' Then
      Begin
        ads_ILDoc_HideViewer(Doc_MainForm);
      End
      Else
      Begin
        ads_ILDoc_ShowViewer(Doc_MainForm);
      End;
      ads_ILDoc_Page        := Page;
      ads_ILDoc_Resolution  := Resolution;
      IL.ReadTifFile(FileName, Page, Resolution);
      GetTiffInfo(
        ads_ILDoc_FileName,
        0,
        ads_ILDoc_Tiff_Width,
        ads_ILDoc_Tiff_Height,
        ads_ILDoc_Tiff_Compression,
        ads_ILDoc_Tiff_Pages,
        ads_ILDoc_Tiff_BPP);
      ads_ILDoc_ImageLoaded := True;

      //Start For SkyDocImage Compatibility
      //only create thumbnails when the paintbox is visible
      If Doc_MainForm.ThumbBox.Visible Then Doc_MainForm.CreateAndShowThumbs;
      //Set it as selected
      Doc_MainForm.SelectUnSelect(1, PageNum);
      //End For SkyDocImage Compatibility
      dmViewerNav.ActionListViewerNavChange(nil);
    Finally
      //Start For SkyDocImage Compatibility
      Doc_MainForm.cNorm;
      Doc_MainForm.CanPaint:=True;
      Doc_MainForm.ThumbPaintBox.ReFresh;
      Doc_MainForm.CheckDisableorEnablemenu;
      //End For SkyDocImage Compatibility
      Screen.Cursor := Cursor;
    End;
  Except
    On E : Exception Do
    Begin
      ads_ILDoc_FileName         := '';
      ads_ILDoc_ImageLoaded      := False;
      ads_ILDoc_Page             := -1;
      ads_ILDoc_Resolution       := -1;
      ads_ILDoc_Tiff_BPP         := -1;
      ads_ILDoc_Tiff_Compression := '';
      ads_ILDoc_Tiff_Height      := -1;
      ads_ILDoc_Tiff_Page        := -1;
      ads_ILDoc_Tiff_Pages       := -1;
      ads_ILDoc_Tiff_Width       := -1;
      Raise Exception.Create('Error in '+UnitName+'.'+ProcName+':'+E.Message);
    End;
  End;
End;

//
Unit Description UnitIndex Master Index
procedure ads_ILDoc_GoToBottomRight(IL: ILDocumentImage);
Var
  ProcName : String;
begin
  ProcName := 'ads_ILDoc_GoToBottomRight';
  Try
    If ads_ILDoc_ImageLoaded Then
    Begin
      IL.FTopLeft.y :=
        StrToInt(FloatToStr(Int((ads_ILDoc_Tiff_Height*IL.ScalePercent)/100)))
        -IL.Height;
      IL.FTopLeft.x :=
        StrToInt(FloatToStr(Int((ads_ILDoc_Tiff_Width*IL.ScalePercent)/100)))
        -IL.Width;
      IL.Refresh;
    End;
  Except
    On E : Exception Do
    Begin
      Raise Exception.Create('Error in '+UnitName+'.'+ProcName+':'+E.Message);
    End;
  End;
end;


//
Unit Description UnitIndex Master Index
procedure ads_ILDoc_GoToBottomLeft(IL: ILDocumentImage);
Var
  ProcName : String;
begin
  ProcName := 'ads_ILDoc_GoToBottomLeft';
  Try
    If ads_ILDoc_ImageLoaded Then
    Begin
      IL.FTopLeft.y :=
        StrToInt(FloatToStr(Int((ads_ILDoc_Tiff_Height*IL.ScalePercent)/100)))
        -IL.Height;
      IL.FTopLeft.x := 0;
      IL.Refresh;
    End;
  Except
    On E : Exception Do
    Begin
      Raise Exception.Create('Error in '+UnitName+'.'+ProcName+':'+E.Message);
    End;
  End;
end;

//
Unit Description UnitIndex Master Index
procedure ads_ILDoc_GoToTopRight(IL: ILDocumentImage);
Var
  ProcName : String;
begin
  ProcName := 'ads_ILDoc_GoToTopRight';
  Try
    If ads_ILDoc_ImageLoaded Then
    Begin
      IL.FTopLeft.y := 0;
      IL.FTopLeft.x :=
        StrToInt(FloatToStr(Int((ads_ILDoc_Tiff_Width*IL.ScalePercent)/100)))
        -IL.Width;
      IL.Refresh;
    End;
  Except
    On E : Exception Do
    Begin
      Raise Exception.Create('Error in '+UnitName+'.'+ProcName+':'+E.Message);
    End;
  End;
end;

//
Unit Description UnitIndex Master Index
procedure ads_ILDoc_GoToTopLeft(IL: ILDocumentImage);
Var
  ProcName : String;
begin
  ProcName := 'ads_ILDoc_GoToTopLeft';
  Try
    If ads_ILDoc_ImageLoaded Then
    Begin
      IL.FTopLeft.y := 0;
      IL.FTopLeft.x := 0;
      IL.Refresh;
    End;
  Except
    On E : Exception Do
    Begin
      Raise Exception.Create('Error in '+UnitName+'.'+ProcName+':'+E.Message);
    End;
  End;
end;

//
Unit Description UnitIndex Master Index
Procedure ads_ILDoc_ESAInitCreate(Var Doc_MainForm: TDoc_MainForm; IsVisible: Boolean);
Begin
  If Not (Application.MainForm is TDoc_MainForm) Then
  Begin
    Doc_MainForm.Exit1.Visible := IsVisible;
  End;
  frmMain.PageControl1.ActivePage        := frmMain.pageMain;
  With Doc_MainForm Do
  Begin
    Annotation1                   .Visible := IsVisible;
    Cut1                          .Visible := IsVisible;
    CutButton                     .Visible := IsVisible;
    DeletePage3                   .Visible := IsVisible;
    DeskewAllPages1               .Visible := IsVisible;
    DeskewPage1                   .Visible := IsVisible;
    DeskewPagebtn                 .Visible := IsVisible;
    (*
    Edit971                       .Visible := IsVisible;
    *)
    EditTags1                     .Visible := IsVisible;
    ExportFiles1                  .Visible := IsVisible;
    First1                        .Visible := IsVisible;
    FullScreen1                   .Visible := IsVisible;
    GoBack1                       .Visible := IsVisible;
    GoTo1                         .Visible := IsVisible;
    Help1                         .Visible := IsVisible;
    ImagingPreviewHelp1           .Visible := IsVisible;
    ImportFiles1                  .Visible := IsVisible;
    Insertfromclibboard1          .Visible := IsVisible;
    Last1                         .Visible := IsVisible;
    LastOpenFile1                 .Visible := IsVisible;
    Lastopenfile2                 .Visible := IsVisible;
    Lastopenfile3                 .Visible := IsVisible;
    MainToolbar                   .Visible := IsVisible;
    Toolbar972                    .Visible := IsVisible;
    N10                           .Visible := IsVisible;
    N4                            .Visible := IsVisible;
    N5                            .Visible := IsVisible;
    N9                            .Visible := IsVisible;
    Newfile                       .Visible := IsVisible;
    Next1                         .Visible := IsVisible;
    NextPage                      .Visible := IsVisible;
    (*
    OnePage1                      .Visible := IsVisible;
    OnePageBtn                    .Visible := IsVisible;
    *)
    RotateAllPages1               .Visible := IsVisible;
    OpenlastknownScratchboard1    .Visible := IsVisible;
    OpentoScratchBoard1           .Visible := IsVisible;
    PackFile1                     .Visible := IsVisible;
    Page_ThumbNails_ScratchBtn    .Visible := IsVisible;
    (*
    PageandThumbnails1            .Visible := IsVisible;
    PageAndThumbNailsBtn          .Visible := IsVisible;
    *)
    PageThumbnailsandScratchboard1.Visible := IsVisible;
    PasteButton                   .Visible := IsVisible;
    Paste1                        .Visible := IsVisible;

    Previous1                     .Visible := IsVisible;
    PreviousPage                  .Visible := IsVisible;

    Properties1                   .Visible := IsVisible;
    RemoveBorder1                 .Visible := IsVisible;
    RemoveBorderAllPages1         .Visible := IsVisible;
    RemoveBrdBtn                  .Visible := IsVisible;
    ReplacefromClipboard1         .Visible := IsVisible;
    ScanNew1                      .Visible := IsVisible;
    SelectScanner1                .Visible := IsVisible;
    Send1                         .Visible := IsVisible;
    ShowDeskewAnge1               .Visible := IsVisible;
    Text_Tiif_Text                .Visible := IsVisible;
    Toolbar971                    .Visible := IsVisible;
    Toolbars1                     .Visible := IsVisible;
    ToolbarButton976              .Visible := IsVisible;
    Tools1                        .Visible := IsVisible;
    (*
    View1                         .Visible := IsVisible;
    *)
    Width                                  := 110;
  End;
End;

//
Unit Description UnitIndex Master Index
Procedure ads_ILDoc_ShowViewer(Var Doc_MainForm: TDoc_MainForm);
Var
  inCounter : Integer;
Begin
  For inCounter := 0 To Doc_MainForm.MainMenu1.Items.Count -1 Do
  Begin
    If Doc_MainForm.MainMenu1.Items[inCounter].Tag = 13 Then
    Begin
      Doc_MainForm.MainMenu1.Items[inCounter].Visible := True;
      Doc_MainForm.MainMenu1.Items[inCounter].Tag := 0;
    End
    Else
    Begin
      If Doc_MainForm.MainMenu1.Items[inCounter].Tag = 14 Then
      Begin
        Doc_MainForm.MainMenu1.Items[inCounter].Visible := False;
        Doc_MainForm.MainMenu1.Items[inCounter].Tag := 0;
      End;
    End;
  End;
  Doc_MainForm.pgeViewer.ActivePage := Doc_MainForm.pageViewer;
  Doc_MainForm.pgeViewerChange(nil);
End;

//
Unit Description UnitIndex Master Index
Procedure ads_ILDoc_HideViewer(Var Doc_MainForm: TDoc_MainForm);
Var
  inCounter : Integer;
Begin
  For inCounter := 0 To Doc_MainForm.MainMenu1.Items.Count -1 Do
  Begin
    If Doc_MainForm.MainMenu1.Items[inCounter].Visible Then
    Begin
      Doc_MainForm.MainMenu1.Items[inCounter].Tag := 13;
    End
    Else
    Begin
      Doc_MainForm.MainMenu1.Items[inCounter].Tag := 14;
    End;
    Doc_MainForm.MainMenu1.Items[inCounter].Visible := False;
  End;
  Doc_MainForm.pgeViewer.ActivePage := Doc_MainForm.pageGradient;
  Doc_MainForm.pgeViewerChange(nil);
End;

Initialization
  ads_ILDoc_FileName            := '';
  ads_ILDoc_FileNamePath        := '';
  ads_ILDoc_FileNameNoPath      := '';
  ads_ILDoc_FileNameNoPathOrExt := '';
  ads_ILDoc_ImageLoaded         := False;
  ads_ILDoc_Page                := -1;
  ads_ILDoc_Resolution          := -1;
  ads_ILDoc_Tiff_BPP            := -1;
  ads_ILDoc_Tiff_Compression    := '';
  ads_ILDoc_Tiff_Height         := -1;
  ads_ILDoc_Tiff_Page           := -1;
  ads_ILDoc_Tiff_Pages          := -1;
  ads_ILDoc_Tiff_Width          := -1;
end.
//