Важная информация

User Tag List

Показано с 1 по 1 из 1

Тема: Библиотека Picasso96api freePascal 3.2.2 OS4.1 FE

  1. #1
    Master
    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    847
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    100
    Поблагодарили
    67 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Библиотека Picasso96api freePascal 3.2.2 OS4.1 FE

    Немного освоил эту библиотеку. Написал небольшую программу:
    Код:
    Program P96_Window;
    uses  exec, sysutils, utility, intuition,agraphics,picasso96api;
    procedure Paint( AWin:PWindow;ci:TTrueColorInfo;x:LongWord;y:LongWord);
    begin
    
            p96WriteTrueColorData(@ci,0,0,AWin^.RPort,x,y,600,400);
    
    end;
    var
            win:PWindow;
            done:Boolean=False;
            Msg:PIntuiMessage;
            Scr:PScreen;
            key:Word;
            error:LongWord;
            TCI:TTrueColorInfo;
            count:LongInt;
            colorcount1:Byte=0;
            colorcount2:Byte=0;
            colorcount3:Byte=0;
            offsetx:LongWord;
            offsety:LongWord;
    
    begin
            Scr:=lockPubScreen('Workbench');
            win:=P96PIP_OpenTags([
            P96PIP_SourceFormat,RGBFF_R8G8B8,
            P96PIP_SourceWidth,AsTag(600),
            P96PIP_SourceHeight,AsTag(400),
            P96PIP_ErrorCode,LongWord(@error),
            WA_Title,asTag('Picasso Window'),
            WA_SimpleRefresh,asTag(True),
            WA_InnerWidth,asTag(600),
            WA_InnerHeight,asTag(400),
            WA_DragBar, asTag(True),
            WA_CustomScreen,LongWord(Scr),
            WA_FLAGS,WFLG_Closegadget or WFLG_ACTIVATE,
            WA_IDCMP,IDCMP_CLOSEWINDOW or IDCMP_REFRESHWINDOW or IDCMP_RAWKEY or IDCMP_CHANGEWINDOW,
            TAG_END,TAG_DONE]);
            unlockPubScreen(nil,Scr);
            Writeln('error code ',error);
    
            offsetx:=win^.borderleft;
            offsety:=win^.bordertop;
    
    
            TCI.PixelDistance:=1;//???
            TCI.BytesPerRow:=0;//???
            TCI.RedData:=AllocMem(120000); //600*400/2
            TCI.GreenData:=AllocMem(120000);
            TCI.BlueData:=AllocMem(120000);
            For count:=0 to 120000 do
            begin
                    (TCI.RedData+count)^:=colorcount1;
                    colorcount1:=colorcount1+1;
                    (TCI.GreenData+count)^:=colorcount2;
                    colorcount2:=colorcount2+5;
                    (TCI.BlueData+count)^:=colorcount3;
                    colorcount3:=colorcount3+3;
    
            end;
            Paint(win,TCI,offsetx,offsety);
            while done=False do
            begin
                    key:=0;
                    Msg:=p96PIP_GetIMsg(win^.UserPort);
                    if Msg<>nil Then
                    begin
                            case Msg^.IClass of
                            IDCMP_CloseWindow:
                                    begin
                                            done:=True;
                                             continue;
                                    end;
                            IDCMP_REFRESHWINDOW:
                                    begin
                                            BeginRefresh(win);
                                            Paint(win,TCI,offsetx,offsety);
                                            EndRefresh(win,False);
                                    end;
                            IDCMP_CHANGEWINDOW:
                                            Paint(win,TCI,offsetx,offsety);
                            IDCMP_RAWKEY:
                                    key:=Msg^.code;
                            end;
                            p96PIP_ReplyIMsg(Msg);
                    end;
                    if key=$45 then done:=True;//ESC key
    
            end;
            p96PIP_Close(Win);
            freemem(TCI.RedData);
            freemem(TCI.GreenData);
            freemem(TCI.BlueData);
    end.
    Результат работы:

    Скриншот



    [свернуть]


    Нашёл некоторые баги. Одна функция p96PIP_getTags неправильно работает с адресами записей.
    ¡Un momento, señor fiscal!


  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Библиотека Cybergraphics(CGX) для FPC OS4.1
    от Smalovsky в разделе Amiga
    Ответов: 7
    Последнее: 21.09.2023, 16:28
  2. Программирование на free Pascal в OS4.1
    от Smalovsky в разделе Amiga
    Ответов: 4
    Последнее: 07.09.2023, 08:06
  3. Графическая библиотека
    от alone в разделе Программирование
    Ответов: 81
    Последнее: 31.01.2016, 20:37
  4. Библиотека Си для Апогея.
    от vinxru в разделе Радио-86РК
    Ответов: 4
    Последнее: 16.12.2012, 17:21
  5. библиотека на форум
    от sevol в разделе Форум
    Ответов: 4
    Последнее: 26.06.2010, 09:06

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •