Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Dec 04, 2020 11:28 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 12 posts ] 
Author Message
PostPosted: Mon Sep 07, 2020 7:23 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Читалка md файлов
Не готово, только Идея, и начало реализации
viewtopic.php?f=39&t=4287#p75120


Last edited by maxcodehack on Wed Oct 21, 2020 6:58 pm, edited 17 times in total.

Top
   
PostPosted: Mon Sep 07, 2020 7:27 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Del


Last edited by maxcodehack on Wed Oct 28, 2020 11:57 am, edited 5 times in total.

Top
   
PostPosted: Mon Sep 07, 2020 7:29 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Del


Last edited by maxcodehack on Wed Oct 28, 2020 11:57 am, edited 2 times in total.

Top
   
PostPosted: Tue Sep 08, 2020 10:59 am 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Хм, почему так?
пишу так :

Code:
int win_bg_color = 0x000825;

scroll_bar scroll = { 15,WIN_W - 35,WIN_H - 68,44,0,2,115,15,0, 0x000825, 0x000963, 0x000825,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1};

И все нормально, вы заметили, что оно уже есть в той переменной?

Я решил вместо числа, подставить win_bg_color

Code:
int win_bg_color = 0x000825;

scroll_bar scroll = { 15,WIN_W - 35,WIN_H - 68,44,0,2,115,15,0, win_bg_color, 0x000963, win_bg_color,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1};

Но выдает ошибку - number expected два раза


Last edited by maxcodehack on Wed Oct 28, 2020 11:58 am, edited 1 time in total.

Top
   
PostPosted: Tue Sep 08, 2020 10:25 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 874
maxcodehack wrote:
Но выдает ошибку - number expected два раза

возможно причина может быть в типе переменной, int - это целое а оно может быть и 2 и 4 и 8 байт (зависит от конкретного компилятора). Т. е. попробовать что-то вроде Int32 или long int или DWORD вместо простого int.


Top
   
PostPosted: Wed Sep 09, 2020 9:44 am 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Спасибо :-)
но мне уже ответили так)
Но все равно что то не хочет компилировать(
Но уже наверно не нужно будет, я другие цвета поставлю


Last edited by maxcodehack on Wed Oct 28, 2020 11:57 am, edited 1 time in total.

Top
   
PostPosted: Thu Sep 10, 2020 11:32 am 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Более новое ниже!
Quote:
C-- только людей пугать

http://board.kolibrios.org/viewtopic.php?f=2&t=1082#p19147
Переписал на СИ, и добавил шрифты из rasterworks
Spoiler: Show
Attachment:
Снимок экрана от 2020-09-27 17-15-04.png
Снимок экрана от 2020-09-27 17-15-04.png [ 1.79 MiB | Viewed 2130 times ]


Attachments:
MARKER_LAST_STABLE.zip [8.89 KiB]
Downloaded 25 times

_________________
How to use different compilers in KolibriOS
Old doc
http://diamond.kolibrios.org/hll/hll.htm
New doc
https://maxcodehack.github.io/hll-kos/


Last edited by maxcodehack on Sat Oct 24, 2020 2:34 pm, edited 12 times in total.
Top
   
PostPosted: Tue Sep 15, 2020 5:54 pm 
Offline

Joined: Tue Apr 09, 2019 8:57 pm
Posts: 27
maxcodehack wrote:
Но выдает ошибку - number expected два раза

maxcodehack, попробуй строку int win_bg_color = 0x000825; заменить определением #define win_bg_color 0x000825


Top
   
PostPosted: Wed Oct 21, 2020 6:54 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Пока приостанавливаю разработку, и выкладываю последнее сделанное
Spoiler: Show
Attachment:
Снимок экрана от 2020-10-04 20-50-55.png
Снимок экрана от 2020-10-04 20-50-55.png [ 1.77 MiB | Viewed 1687 times ]

Не C--, а СИ


Attachments:
Marker.zip [11.58 KiB]
Downloaded 13 times

_________________
How to use different compilers in KolibriOS
Old doc
http://diamond.kolibrios.org/hll/hll.htm
New doc
https://maxcodehack.github.io/hll-kos/
Top
   
PostPosted: Mon Oct 26, 2020 8:25 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Чтобы поспособствовать разработке marker'а, используя обрывки информации, написал простую программку, которая:
1. Читает шрифт из font.ttf
2. Выводит в окно этим шрифтом фразу HelloWorld
Это как раз и нужно Маркеру.
Только вопрос, как сделать жирный, или курсивный, в следующем коде?
UPD
Судя по FAQ https://www.freetype.org/freetype1/docs ... etype1.txt (пункт 17), только если взять несколько файлов шрифтов, один курсивный, другой не курсивный, и потом создать несколько FACE для cairo_ft_font_face_create_for_ft_face ()
UPD
Добавил изменение цвета фона, написал замысловатую функцию newline, для перехода на новую строку


Attachments:
Снимок экрана от 2020-10-27 18-15-27.png
Снимок экрана от 2020-10-27 18-15-27.png [ 1.84 MiB | Viewed 1506 times ]
cairo+freetype.zip [1008.98 KiB]
Downloaded 12 times
Top
   
PostPosted: Wed Oct 28, 2020 3:17 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Внедрил функционал из поста выше, в marker.

!!! Падает при rolled-up и при 0 размере width !!! (известно почему, но сейчас это не столь важно)
выводится:
Code:
одинаковые строки...
одинаковые строки...
одинаковые строки...
одинаковые строки...
И тд.
Скроллбар скроллит.
Осталось написать парсер из файла, и доделать вывод буфера.


Attachments:
Marker_NEW.zip [1014.6 KiB]
Downloaded 14 times

_________________
How to use different compilers in KolibriOS
Old doc
http://diamond.kolibrios.org/hll/hll.htm
New doc
https://maxcodehack.github.io/hll-kos/
Top
   
PostPosted: Thu Oct 29, 2020 7:31 pm 
Offline

Joined: Mon Sep 07, 2020 7:09 pm
Posts: 257
Опишу немного, как работает:
Code:
kolibri_boxlib_init();
Загрузка boxlib


Code:
    FT_Library value;
    FT_Error status;
    FT_Face face;

    cairo_t *c;
    cairo_surface_t *cs;
    cairo_font_face_t * ct;

    cs = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
    c = cairo_create (cs);

    const char* filename = "font.ttf";

    status = FT_Init_FreeType (& value);
    if (status != 0) {
      fprintf (stderr, "Error %d opening library.\n", status);
      exit (EXIT_FAILURE);
    }
    status = FT_New_Face (value, filename, 0, & face);
    if (status != 0) {
      fprintf (stderr, "Error %d opening %s.\n", status, filename);
      exit (EXIT_FAILURE);
    }
    ct = cairo_ft_font_face_create_for_ft_face (face, 0);
    cairo_set_font_face (c, ct);
Инициализация Freetype и Cairo

Code:
    // FONT CONFIG
    int x = 25, y = 50, font_size = 30;
   
    /////////// DRAW TEXT /////////////////
   
    cairo_set_font_size (c, font_size);
   
    // set BG color
    cairo_set_source_rgb(c, 1, 1, 1);
    cairo_paint(c);
   
    cairo_set_source_rgb (c, 0, 0, 0);
    cairo_move_to (c, x, y);
   
    for (int i = 0; i<30; i++) {
      if ((i%2) == 0) cairo_show_text (c, "Четная строка"); else cairo_show_text (c, "Нечетная строка");
      newline(c, x, &y, font_size);
   }
    /////////// END DRAW TEXT /////////////////

Описание переменных позиции, и размера. Отрисовка текста.


Code:
winstride = cairo_image_surface_get_stride(cs);
winbitmap = cairo_image_surface_get_data(cs);
Запись данных в буфер, которые потом выведутся на экран Blit()'ом.


Code:
void newline(cairo_t *c, int x, int *y, int fontsize) {
   (*y) += fontsize;
   cairo_move_to (c, x, *y);
}
Самодельная функция перехода на новую строку


Еще нужно понять, как определять current в scrollbar.
Еще хотелось бы что бы кто-нибудь посмотрел код, и оценил, указал на неточности.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 12 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited