FreeBasic
Главная
Вход
Регистрация
Четверг, 28.03.2024, 17:33Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Вопросы по языку FreeBasic » Рисование (FLTK)
Рисование
WQДата: Четверг, 19.03.2015, 15:12 | Сообщение # 1
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Код
#Include Once "fltk-c.bi"
#Include "window9.bi"
#Include "win\mmsystem.bi"

Dim Shared As MMRESULT wTimerId
Dim Shared As Double nTicks=500
Dim Shared As Fl_Window Ptr win

Sub DrawMe(ByVal win As Any Ptr)    
    Static As Double zoom = 2    
    Fl_WindowMakeCurrent win
     
    DrawPushMatrix
     
    DrawSetRGBColor 255,255,0
    DrawBeginComplexPolygon
    DrawRectFill 0,1, 700,100
    DrawEndComplexPolygon
     
    DrawSetRGBColor 0,0,128
    DrawBeginComplexPolygon    
     
    DrawArc2 200,1000,60,0,90 ' почему-то без этой строки не работает нормально

    DrawEndComplexPolygon
    DrawPopMatrix

    DrawSetColor FL_BLACK
    DrawSetFont Fl_TIMES, 5+40*zoom
    DrawStr Time, nTicks, 80
    DrawEndComplexPolygon
    nTicks-=0.05

    If nTicks<-900 Then nTicks=200
End Sub

Function TimeProc(uID As UINT,uMsg As UINT,dwUser As Integer,iw1 As Integer,iw2 As Integer) As Integer    
    DrawMe win
    Function=0
End Function

Function On_Timer(msInterval As Integer) As Integer
    Dim As TIMECAPS tc
    Dim As UINT wTimerRes
    Dim As Integer TARGET_RESOLUTION = 1 'timer resolution, millisecs
    timeGetDevCaps(@tc,Len(TIMECAPS))
    wTimerRes = min(max(tc.wPeriodMin,TARGET_RESOLUTION),tc.wPeriodMax)

    'If TARGET_RESOLUTION < tc.wPeriodMin Then
    'EndIf
    'print tc.wPeriodMin,tc.wPeriodMax

    wTimerId = timeSetEvent(msInterval,_    '// delay'
    wTimerRes,_                  '// resolution'
    @TimeProc,_                  '// callback function'
    NULL,_                       '// user data'
    TIME_PERIODIC)               '// or TIME_ONESHOT
    Function=0
End Function

On_Timer(2)

win = Fl_WindowNew(640,480,"Drawing03.bas")
Fl_WindowShow win

Fl_WindowMakeCurrent win

Fl_Run


Посмотрел функции FLTC для рисования и написал этот код. Рисование здесь несколько отличается от других библиотек
Задача - чтоб текст двигался без мерцания. Возможно ли это?
Да, использую таймер с наименьшим интервалом - для большей плавности, обычный WinApi-таймер в 50 раз медленнее.
 
haavДата: Пятница, 20.03.2015, 11:25 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Ты рисуешь прямо на окне. При рисовании не используется двойная буферизация, поэтому и мерцание . Если ты на winapi так же будешь рисовать по окну просто в одном контексте (например при сообщении WM_PAINT) , то мерцания не избежать. Когда используется двойная буферизация, то рисуется в одном контексте, а потом копируется в другой для вывода на экран.

В FLTK походу можно рисовать с двойной буферизацией. Есть пример на С++ :

Код
//
// "$Id: doublebuffer.cxx 8864 2011-07-19 04:49:30Z greg.ercolano $"
//
// Double-buffering test program for the Fast Light Tool Kit (FLTK).
//
// This demo shows how double buffering helps, by drawing the
// window in a particularily bad way.
//
// The single-buffered window will blink as it updates.  The
// double buffered one will not.  It will take just as long
// (or longer) to update, but often it will appear to be faster.
//
// This demo should work for both the GL and X versions of Fl,
// even though the double buffering mechanism is totally different.
//
// Copyright 1998-2010 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file.  If this
// file is missing or damaged, see the license at:
//
//     http://www.fltk.org/COPYING.php
//
// Please report all bugs and problems on the following page:
//
//     http://www.fltk.org/str.php
//

#include <FL/Fl.H>
#include <FL/Fl_Single_Window.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Box.H>
#include <FL/fl_draw.H>
#include <FL/Fl_Hor_Slider.H>
#include <stdlib.h>
#include <FL/math.h>
#include <stdio.h>

// this purposely draws each line 10 times to be slow:
void star(int w, int h, int n) {
   fl_push_matrix();
   fl_translate(w/2, h/2);
   fl_scale(w/2, h/2);
   for (int i = 0; i < n; i++) {
     for (int j = i+1; j < n; j++)/* for (int k=0; k<10; k++)*/ {
       fl_begin_line();
       fl_vertex(cos(2*M_PI*i/n+.1), sin(2*M_PI*i/n+.1));
       fl_vertex(cos(2*M_PI*j/n+.1), sin(2*M_PI*j/n+.1));
       fl_end_line();
     }
   }
   fl_pop_matrix();
}

int sides[2] = {20,20};

void slider_cb(Fl_Widget* o, long v) {
   sides[v] = int(((Fl_Slider*)o)->value());
   o->parent()->redraw();
}

void bad_draw(int w,int h,int which) {
//   for (int i=0; i<10; i++) {
//     fl_color(7); fl_rectf(0,0,w,h); fl_color(0); star(w,h);
//     fl_color(0); fl_rectf(0,0,w,h); fl_color(7); star(w,h);
//   }
   fl_color(FL_BLACK); fl_rectf(0,0,w,h);
   fl_color(FL_WHITE); star(w,h,sides[which]);
   //  for (int x=0; x<sides[which]; x++) for (int y=0; y<sides[which]; y++)
   //fl_draw_box(FL_UP_BOX, 10*x, 10*y, 25,25, FL_GRAY);
}

class single_blink_window : public Fl_Single_Window {
   void draw() {bad_draw(w(),h(),0); draw_child(*child(0));}
public:
   single_blink_window(int x, int y,int w,int h,const char *l)
     : Fl_Single_Window(x,y,w,h,l) {resizable(this);}
};

class double_blink_window : public Fl_Double_Window {
   void draw() {bad_draw(w(),h(),1); draw_child(*child(0));}
public:
   double_blink_window(int x, int y, int w,int h,const char *l)
     : Fl_Double_Window(x,y,w,h,l) {resizable(this);}
};

int main(int argc, char **argv) {
   if (!Fl::visual(FL_DOUBLE))
     printf("Xdbe not supported, faking double buffer with pixmaps.\n");
   Fl_Window w01(420,420,"Fl_Single_Window"); w01.box(FL_FLAT_BOX);
   single_blink_window w1(10,10,400,400,"Fl_Single_Window");
   w1.box(FL_FLAT_BOX); w1.color(FL_BLACK); //w1.position(100,200);
   Fl_Hor_Slider slider0(20,370,360,25);
   slider0.range(2,30);
   slider0.step(1);
   slider0.value(sides[0]);
   slider0.callback(slider_cb, 0);
   w1.end();
   w01.end();
   Fl_Window w02(420,420,"Fl_Double_Window"); w02.box(FL_FLAT_BOX);
   double_blink_window w2(10,10,400,400,"Fl_Double_Window");
   w2.box(FL_FLAT_BOX); w2.color(FL_BLACK); //w2.position(600,200);
   Fl_Hor_Slider slider1(20,370,360,25);
   slider1.range(2,30);
   slider1.step(1);
   slider1.value(sides[0]);
   slider1.callback(slider_cb, 1);
   w2.end();
   w02.end();
   w01.show(argc, argv);
   w1.show();
   w02.show();
   w2.show();
   return Fl::run();
}

//
// End of "$Id: doublebuffer.cxx 8864 2011-07-19 04:49:30Z greg.ercolano $".
//


P.S. Вообще надо конечно сначала шерстить документацию (вот например про рисование: http://www.fltk.org/doc-1.3/drawing.html). А так просто перебирая примеры Джоши, мало что поймешь. Хотя примеры необходимы, чтобы понять и адаптироваться к оберткам Джоши. Библиотека очень объемная, не на один месяц изучения smile Но если разберешься в ней, никакие другие GUI либы нафиг не нужны будут. Я вот тут вчера долго не мог въехать, как отловить событие закрытия окна... Может где-то есть функция получения хендла окна, а там уже можно любое событие отловить, я же нашел способ с callback0. Все таки справка не очень удобно организована...


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Пятница, 20.03.2015, 20:56 | Сообщение # 3
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
haav
Спасибо за пример!
Все таки не могу разобраться - можно ли компилировать fltk так, чтобы не нужно было таскать libfltk-c-1.3.3-32.dll ?
На оф форуме есть что-то про FLTKSTATIC
Покопаля - вроде такое было в старых версиях для freebasica 0.90... Тьфу angry


Сообщение отредактировал WQ - Пятница, 20.03.2015, 21:02
 
haavДата: Суббота, 21.03.2015, 06:28 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата WQ ()
Все таки не могу разобраться - можно ли компилировать fltk так, чтобы не нужно было таскать libfltk-c-1.3.3-32.dll ?
На оф форуме есть что-то про FLTKSTATIC
Покопаля - вроде такое было в старых версиях для freebasica 0.90...


FLTK написана для С++ и использует сишные классы при программировании с ней. Естественно внутреннее устройство FB(шных) классов и сишных классов различно (они несовместимы). Ты можешь конечно сам взять С++ (MINGW) , сделать обертку для каждой функции, метода и откомпилировать в Static lib. Но думаю, что ты не захочешь так париться smile . Можно конечно попросить у Джоши исходники с обертками и просто взять и откомпилировать на MINGW, может быть с небольшими правками. Дело в том, что Джоши для С++ использует майкрософтовский компилятор, а он компилирует статическую либу в формате .lib, а для FB нужна .a. Ну или попросить самого Джоши, чтобы он перекомпилировал свои исходники на GNU(шном) компиляторе.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Четверг, 26.03.2015, 16:09 | Сообщение # 5
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Просто непонятно, раньше была такая возможность, а сейчас нет. На оф форуме никто про это не спрашивал, никому не нужно компилировать все в один файл? 
Та же проблема, что и с IUP 3.11 в freebasic 1.00 - какие-то функции не запилены и все. 
Из реальных вариантов видятся три:
1) забить на принципы и таскать dll рядом с программой.
2) использовать более старую версию и freebasic 0.90, вынести модули в lib или dll, прикрутить к программе написанной на freebasic 1.00 
Я сильно подсел на динамические массивы в структурах, да и багов в новых версиях должно быть меньше.
3) не использовать fltk.

Добавлено (26.03.2015, 16:09)
---------------------------------------------
Возник еще один вопрос - как по FLTK, так и IUP.
Как сделать элемент для ввода времени или даты?

 
haavДата: Четверг, 26.03.2015, 18:22 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата WQ ()
Возник еще один вопрос - как по FLTK, так и IUP.
Как сделать элемент для ввода времени или даты?


Готовых нет. В обоих либах есть возможность рисовать или пытайся какие нибудь встроенные прикрутить, но это мне кажется будет некрасиво.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Понедельник, 06.04.2015, 14:58 | Сообщение # 7
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата haav ()
отовых нет. В обоих либах есть возможность рисовать или пытайся какие нибудь встроенные прикрутить, но это мне кажется будет некрасиво.

Где-то советуют при отсутствии таких элементов использовать элементы типа List. Я прикинул - вроде возможно.

И еще вопрос по fltk - можно там использовать иконки из ресурсов?
 
haavДата: Понедельник, 06.04.2015, 15:34 | Сообщение # 8
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата WQ ()
И еще вопрос по fltk - можно там использовать иконки из ресурсов?


Библиотека кроссплатформенная, а ресурсы только на винде.
Возможно через задний проход в Windows можно сделать, но на Linux как будешь делать?


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Понедельник, 24.08.2015, 21:08 | Сообщение # 9
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата haav ()
Библиотека кроссплатформенная, а ресурсы только на винде. Возможно через задний проход в Windows можно сделать, но на Linux как будешь делать?
Ну, вообще имелось в виду возможность загрузки изображений, находящихся в том или ином виде в скомпилированном файле программы.
У меня в программе несколько десятков изображений и иконок - пришлось бы таскать этот зоопарк рядом с файлом программы. Если идти по такому, я бы даже сказал, "заманчивому", пути, то программа быстро раскабанеет в лучших традициях современных софтописателей - когда следующая версия больше предыдущей в разы wacko

Например, та же IUP поддерживает и ресурсы из Win, и какой-то аналог из GTK, и просто представление изображений в виде строки с числами прямо в коде, можно и нарисовать картинку через ImageCreate и сразу загрузить в Button или Label.

На FLTK последней версии мне очень понравился пример с плавающей нарисованной строкой текста - выглядит лучше, чем то, что есть у меня сейчас.
Думаю, как это все совместить.

Добавлено (24.08.2015, 21:08)
---------------------------------------------
Возник такой вопрос:
Допустим, в программе в два потоках создаются 2 окна.
В WinApi\window9 сделать, чтобы эти окна были независимы (сообщения, рисование, кнопочки всякие и т.д.), несложно - 2 процедуры, в каждой свой цикл.
Собственно, таким способом мне удавалось запускать десяток независимых окон, и все стабильно работало.

А как такое сделать в FLTK? По-простому как-то не очень понятно, простое помещение функции создания окна и Fl_Run в отдельную процедуру, и запуск через ThreadCreate сопровождается разного рода глюками... Или из-заа того, что здесь FLTK на основе dll, есть какие-то ограничения?

 
haavДата: Понедельник, 24.08.2015, 21:44 | Сообщение # 10
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата WQ ()
А как такое сделать в FLTK? По-простому как-то не очень понятно, простое помещение функции создания окна и Fl_Run в отдельную процедуру, и запуск через ThreadCreate сопровождается разного рода глюками... Или из-заа того, что здесь FLTK на основе dll, есть какие-то ограничения?

C этим вопросом лучше к Джоши. Неизвестно как он там реализовал интерфейс, а исходники вроде как закрыты.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Вторник, 25.08.2015, 17:55 | Сообщение # 11
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Исходники есть в формате CodeBlocks, но у меня не компилируются, ставил на разные системы сборки с компилятором, не находит компилятор...
Да и программирую-то я на  Freebasic-е, а не на C++, который знаю плохо...

Да и скорее всего ничего не получится, почитал документацию к FLTK - там что-то вроде переключения между потоками, не слишком хорошо, как и в Autoit с его одним потоком. Не могу сделать два окна, чтобы в них одновременно что-то рисовалось, и не останавливалось при работе с другим окном. Не за этим я пришел в Freebasic  smile

А я только разобрался, как в FLTK рисовать свои виджеты, собирался полностью переписать свои программы с IUP и WinApi.
Нужна кроссплатформенность, малый объем, и как можно меньше всяких dll в папке с программой. Ну и захотелось внешний вид покрасивее.
FLTK вроде полностью подходила, портабельная, виджеты красивые, а тут такая засада... IUP тоже портабельная, но кнопки там нарисовать красивые практически невозможно (я долго ее "мучал", а потом нарисовал пару элементов в FLTK, и мои IUP-кнопки теперь вызывают какие-то неприятные чувства), при большом числе элементов и высокой скорости отрисовки тормозит.
Некоторые функции в IUP странные - можно сделать окно неправильной формы в Win и линукс, но на нем не видно ни одной кнопки или другого элемента! И зачем такое нужно? С другой строны, IUP на основе WinApi и Gtk, можно использовать функции из этих библиотек, там есть встраиваемый браузер (а мне он нужен обязательно), часто обновляется, создатели сами выкладывают lib-файлы для FB...

Далее есть еще GTK - на Win мне ее заставить работать не удалось, все время требует какие-то dll, целую кучу, хотя все они лежат рядом и пути прописаны.
Мне бы какую-нибудь сборку, чтобы работало сразу, хотя бы возможности оценить.
На линуксе работает, но тоже требует сначала установить кучу всего... Но там вроде тоже можно свои виджеты создавать? И документация есть...

Еще смотрел Wx-c, которая в сборке присутствует, примеров мало, кроссплатформенная ли она? Опять же все с C++...

Пока думаю одну часть, где не требуется многопоточность, писать на FLTK, а другую не знаю на чем wacko
 
haavДата: Вторник, 25.08.2015, 20:47 | Сообщение # 12
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата WQ ()
Исходники есть в формате CodeBlocks, но у меня не компилируются, ставил на разные системы сборки с компилятором, не находит компилятор...

Джоши использовал компиль gnu_gcc_compiler_i686_w64_492. В настройках проекта стоит именно он, для того, чтобы использовать предустановленный тобою компиль, надо его задать в настройках проекта. Более того, это ведь не весь проект, а только те файлы, которые написал Джоши, то есть нужно будет еще скачивать исходники FLTK и тоже подключать к проекту.  В общем думаю пока это не для тебя smile

Цитата WQ ()
Далее есть еще GTK - на Win мне ее заставить работать не удалось, все время требует какие-то dll, целую кучу, хотя все они лежат рядом и пути прописаны.

Что-то не так делаешь. Я сейчас не помню, но вроде как GTK  можно установить инсталлятором. Там по умолчанию все пути занесутся в переменные среды. Но судя по твоему желанию:

Цитата WQ ()
Нужна кроссплатформенность, малый объем, и как можно меньше всяких dll в папке с программой

тебе GTK не подойдет, потому, что там рантайм после установки весит где-то 25 мб. При чем это можно сказать базовый набор, а ведь для удобства и более красивого вида , есть еще Glade...  В папке где будет установлен GTK , окажется очень много DLL-ок , да и EXE-шники тоже есть.  

Цитата WQ ()
Еще смотрел Wx-c, которая в сборке присутствует, примеров мало, кроссплатформенная ли она?


Да она кроссплатформенная, многие любят и хвалят ее, при том под винду всего одна DLL-ка, правда под 10 мб, но кто их сейчас считает эти мегабайты smile . И да ты прав, это опять враппер...

Цитата WQ ()
при большом числе элементов и высокой скорости отрисовки тормозит

Мне кажется для тебя самое лучшее - это IUP , пробуй подключать CAIRO для рисования , или используй изображения для кнопок. В конце концов можно под винду красивости в IUP расширить за счет WINAPI, а в linux за счет GTK. Но я все это не пробовал, мне вообще трудно что либо советовать по этим библиотекам, это с window9 я могу что-то подсказать, а там другая архитектура, требующая изучения и определенного практического использования.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Вторник, 17.11.2015, 12:57 | Сообщение # 13
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
haav
Спасибо за советы.
В IUP можно выводить текст с выбром шрифта, но при большой скорости и плавности велика нагрузка на процессор. Но там же можно рисовать и картинку в формате IupImage с заранее выведенным текстом, и нагрузка при этом гораздо меньше.
До меня только недавно дошло, что  IupImage - практически то же самое, что и Fbimage, получаемый от ImageCreate, указатель на пиксели (и оно же формат изображений в FLTK)
Т.е., подходит любая библиотека для вывода текста в графическое окно freebasic, и где можно задать шрифт. Попробовал xfont - работает, кроссплатформенная, есть юникод, но там, как я понял, проблема с выбором шрифта, нужно их подготавливать заранее... Да, и CAIRO должно подойти, но под win просит кучу dll, есть freetype, там вроде только одна dll, но пока ищу что-нибудь, что можно статически привязать. 
Есть CD, библиотека от создателей IUP -  довольно интересная вещь, она может прямо рисовать текст в IUP-окна, но также нагружает процессор. Статическая линковка, размер относительно небольшой. Через несколько операций нарисованную картинку можно вывести и в IupImage, но пока не смог заставить работать пример кода, который дается на сайте CD.

Добавлено (17.09.2015, 00:06)
---------------------------------------------
Еще один вопрос по FLTK - можно ли к произвольному виджету привязать плавающее меню из нескольких пунктов?
В примерах только кнопка с меню, которая скачет при клике по окну.

Пишу свой виджет Input, нужно добавить возможность вставки\копирования текста из буфера через меню. У встроенного инпута тоже нет меню. 
Конечно, можно и обычные window меню привязать, но может есть способ через средства самой FLTK.

Добавлено (03.10.2015, 15:50)
---------------------------------------------
Написал Джоши на офф форум про проблемы с работай вставки-копирования в буфер обмена в Win и Linux. 
В итоге обнаружилась ошибка в функции FL_Paste, Джоши оперативно обновил враппер, за что ему спасибо большое.
Позже постараюсь у него еще некоторые моменты прояснить.

Добавлено (21.10.2015, 13:02)
---------------------------------------------
Попросил Джоши добавить функцию Fl_XID - получение хэндла окна FLTK в Windows и идентификатора в Linux (непонятно, почему он ее сразу не добавил).
Сейчас функция добавлена, и теперь сравнительно несложно интегрировать FLTK-окна в другие, в первую очередь, Windows-проекты.

Добавлено (25.10.2015, 13:21)
---------------------------------------------
Продолжаю разбираться с FLTK
Благодаря выложенным все тем же Джоши кодам появилась возможность относительно простым способом выделить из FLTK некоторые полезные кросcплатформенные функции в виде небольших (20-30 кб) статических библиотек - например, функции работы с UTF (набор функций, позволяет перегонять строки zstring utf8 в wstring или массивы unicode символов и обратно простым и понятным способом, в отличие от WinApi, но при этом может использоваться и в Linux) или функции работы с именами файлов и папок. Насколько я понял, эти функции автономны и могут использоваться в несколько потоков, в отличие от функций создания GUI.

Добавлено (17.11.2015, 12:57)
---------------------------------------------
Сейчас выложена FB-версия FLTK со статической линковкой под Win и Linux, теперь не требуется таскать dll\so, и размеры программ уменьшаются как минимум на 300-350 кб.

 
haavДата: Вторник, 17.11.2015, 14:14 | Сообщение # 14
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Репутация: 49
Статус: Offline
Цитата WQ ()
Сейчас выложена FB-версия FLTK со статической линковкой под Win и Linux, теперь не требуется таскать dll\so, и размеры программ уменьшаются как минимум на 300-350 кб.


Спасибо за новость! Кстати, ты проверял, как с кириллицей на Linux? У меня крякозябры на Linux mint. На винде все нормально. Если у тебя тоже траблы, отпиши тогда пожалуйста Джоши, может косяк именно в библиотеке, а не в FB , хотя может и второе...


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
WQДата: Вторник, 29.03.2016, 15:19 | Сообщение # 15
Полковник
Группа: Проверенные
Сообщений: 215
Репутация: 7
Статус: Offline
Цитата haav ()
Спасибо за новость! Кстати, ты проверял, как с кириллицей на Linux? У меня крякозябры на Linux mint. На винде все нормально. Если у тебя тоже траблы, отпиши тогда пожалуйста Джоши, может косяк именно в библиотеке, а не в FB , хотя может и второе...

Я не так часто под linux сейчас пишу, сейчас проверил эту статическую версию - компилятор ругнулся на отсутствие GL lib.
Решение sudo apt-get install libgl1-mesa-dev (в Ubuntu)
После этого все вроде компилируется
Рекомендуется переходить на FB 1.04, Джоши под последнюю версию все это видимо пишет.

Добавлено (18.11.2015, 00:54)
---------------------------------------------
В общем я малость запутался, думал, речь в целом про FLTK в Linux... сейчас все перепроверил на Ubuntu 14.04 + FB 1.04:
да, что-то на этой новой версии кириллица не работает. Напишу на оф форуме.

Добавлено (19.11.2015, 15:20)
---------------------------------------------
haav  
Джоши отписался, что знает о проблеме, но решения у него нет. Пишет, что код для .so и для .a библиотек одинаковый.
Предлагает использовать динамическую версию.
Я, в свою очередь, погрузился в исходники, которые Джоши выложил. 
Пока вижу, что проблема на стороне языка C, но я в нем тоже новичек.
Возможно, решение на поверхности, т.к. Джоши - пользователь латиницы, и у него не возникает обычных проблем с кодировками и всем таким прочим, которые есть у пишущих на кириллице. Может быть, русскоязычный спец по С сразу бы что-нибудь подсказал.

В любом случае, кроме кириллицы, мне потребуются и иероглифы, и FLTK в Ubuntu по-простому не может их показать, даже динамическая версия - скорее всего, дело в шрифтах, которые в FLTK ограничены.

Добавлено (29.03.2016, 15:19)
---------------------------------------------
Джоши выложил новый C враппер для FLTK
http://www.freebasic.net/forum/viewtopic.php?f=14&t=24547

Старую тему он вообще просил удалить (и все файлы для загрузки убрал).
Насколько могу понять, все библиотеки динамические, что, с моей точки зрения, не есть хорошо.
Из отличий также - версия FLTK для ARM типа Raspberry PI, а вот это очень хорошо.

Сообщение отредактировал WQ - Среда, 18.11.2015, 00:46
 
Форум » Freebasic » Вопросы по языку FreeBasic » Рисование (FLTK)
  • Страница 1 из 1
  • 1
Поиск: