*****************************************************************
***               LineBoard AkelPad plugin v12.6              ***
*****************************************************************

2007-2017   aka Instructor (Shengalts@mail.ru)


***  ***

1.     .
2.   .

:
-          , 
         "/".


***  ***

LineBoard::Main
      .

LineBoard::Settings
  .


***   ***

Call("LineBoard::Main", 1)
  :
    1
          .

Call("LineBoard::Main", 2, *HEIGHT, *ENABLE)
  :
    2
        .
    *HEIGHT
        ,    .
    *ENABLE
       .   ,    .
  :
    WScript.Echo(GetRulerHeight());

    function GetRulerHeight()
    {
      var lpHeight;
      var nHeight=0;

      if (lpHeight=AkelPad.MemAlloc(4 /*sizeof(int)*/))
      {
        AkelPad.CallW("LineBoard::Main", 2, lpHeight);
        nHeight=AkelPad.MemRead(lpHeight, 3 /*DT_DWORD*/);
        AkelPad.MemFree(lpHeight);
      }
      return nHeight;
    }

Call("LineBoard::Main", 3, HEIGHT)
  :
    3
        .
    HEIGHT
       .
              ,    (  0).
         -1,    .

Call("LineBoard::Main", 4, *BOOL)
  :
    4
      / .
    *BOOL
       .   ,    .
   (  ):
    WScript.Echo(IsLineBoardVisible());

    function IsLineBoardVisible()
    {
      var lpVisible;
      var bVisible=false;

      if (lpVisible=AkelPad.MemAlloc(4 /*sizeof(BOOL)*/))
      {
        AkelPad.CallW("LineBoard::Main", 4, lpVisible);
        bVisible=AkelPad.MemRead(lpVisible, 3 /*DT_DWORD*/);
        AkelPad.MemFree(lpVisible);
      }
      return bVisible;
    }

Call("LineBoard::Main", 11, WINDOW, DOCUMENT, *RECT)
  :
    11
         .
    WINDOW
        .
    DOCUMENT
       .
    *RECT
        ,     .
        RECT.left -   .
        RECT.top -  .
        RECT.right -      .
        RECT.bottom -      .
  :
    WScript.Echo(GetBoardWidth(AkelPad.GetEditWnd(), 0));

    function GetBoardWidth(hWndEdit, hDocEdit)
    {
      var lpRect;
      var nWidth=0;

      if (lpRect=AkelPad.MemAlloc(16 /*sizeof(RECT)*/))
      {
        AkelPad.CallW("LineBoard::Main", 11, hWndEdit, hDocEdit, lpRect);
        nWidth=AkelPad.MemRead(lpRect + 0 /*offsetof(RECT, left)*/, 3 /*DT_DWORD*/);
        AkelPad.MemFree(lpRect);
      }
      return nWidth;
    }

Call("LineBoard::Main", 12, WINDOW, DOCUMENT, *BOOKMARK, *BOOKMARKLENGTH)
  :
    12
          .
    WINDOW
        .
    DOCUMENT
       .
    *BOOKMARK
        ,        .   NULL.   Unicode.
    *BOOKMARKLENGTH
         BOOKMARK.   NULL.
  :
    WScript.Echo(GetBookmarksString(AkelPad.GetEditWnd(), 0));

    function GetBookmarksString(hWndEdit, hDocEdit)
    {
      var pBookmarksStr="";
      var lpBookmarksStr;
      var nBookmarksLen;
      var lpBookmarksLen;

      if (lpBookmarksLen=AkelPad.MemAlloc(4 /*sizeof(int)*/))
      {
        AkelPad.CallW("LineBoard::Main", 12, hWndEdit, hDocEdit, 0, lpBookmarksLen);

        if ((nBookmarksLen=AkelPad.MemRead(lpBookmarksLen, 3 /*DT_DWORD*/)) > 1)
        {
          if (lpBookmarksStr=AkelPad.MemAlloc(nBookmarksLen * 2 /*sizeof(wchar_t)*/))
          {
            AkelPad.CallW("LineBoard::Main", 12, hWndEdit, hDocEdit, lpBookmarksStr, 0);
            pBookmarksStr=AkelPad.MemRead(lpBookmarksStr, 1 /*DT_UNICODE*/);
            AkelPad.MemFree(lpBookmarksStr);
          }
        }
        AkelPad.MemFree(lpBookmarksLen);
      }
      return pBookmarksStr;
    }

Call("LineBoard::Main", 13, WINDOW, DOCUMENT, "BOOKMARK")
  :
    13
       .
    WINDOW
        .
    DOCUMENT
       .
    "BOOKMARK"
           . : "10,14,20".

Call("LineBoard::Main", 14, WINDOW, DOCUMENT)
  :
    14
        .
    WINDOW
       .   .
    DOCUMENT
       .  .

Call("LineBoard::Main", 15, WINDOW, DOCUMENT)
  :
    15
             ,        .
    WINDOW
       .   .
    DOCUMENT
       .  .

Call("LineBoard::Main", 16, WINDOW, DOCUMENT)
  :
    16
         .
    WINDOW
       .   .
    DOCUMENT
       .  .

Call("LineBoard::Main", 17, WINDOW, DOCUMENT)
  :
    17
        .
    WINDOW
       .   .
    DOCUMENT
       .  .

Call("LineBoard::Main", 18, WINDOW, DOCUMENT)
  :
    18
         .
    WINDOW
       .   .
    DOCUMENT
       .  .

Call("LineBoard::Main", 19, WINDOW, DOCUMENT)
  :
    19
         .
    WINDOW
       .   .
    DOCUMENT
       .  .
