Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.223.21.5] |
|
Сообщ.
#1
,
|
|
|
Поставил себе на Мак fpc 2.0.2, однако в нём отсутствует графический модуль. От графики мне необходимо просто создать графическое окно и иметь возможность кинуть в него дамп памяти (двоичную картинку размером с него самого).
Я понятия не имею как вообще реализуется вызов функций системы (можно считать что ОС это FreeBSD) и какое uses надо для этого делать. Код для Си на создание окна есть на соотвветсвующем Site. Вот примерно что там написанно в заготовке: #define kMyHIViewSignature 'mVue' // 1 #define kMyHIViewFieldID 130 int main (int argc, char* argv[]) { IBNibRef nibRef; OSStatus err; WindowRef myMainWindow; HIViewRef myHIView; // 2 static const EventTypeSpec myHIViewSpec[] = {kEventClassControl, // 3 kEventControlDraw }; static const HIViewID myHIViewID = { kMyHIViewSignature, // 4 kMyHIViewFieldID }; err = CreateNibReference (CFSTR("main"), &nibRef); require_noerr (err, CantGetNibRef); err = SetMenuBarFromNib(nibRef, CFSTR("MenuBar")); require_noerr (err, CantSetMenuBar); err = CreateWindowFromNib (nibRef, CFSTR("MainWindow"), &myMainWindow); require_noerr (err, CantCreateWindow ); DisposeNibReference(nibRef); HIViewFindByID (HIViewGetRoot(myMainWindow), myHIViewID, &myHIView); // 5 err = InstallEventHandler (GetControlEventTarget (myHIView), // 6 NewEventHandlerUPP (MyDrawEventHandler), GetEventTypeCount (myHIViewSpec), &myHIViewSpec, (void *) myHIView, NULL); ShowWindow (myMainWindow); RunApplicationEventLoop(); CantCreateWindow: CantSetMenuBar: CantGetNibRef: return err; } Помогите создать графическое окно на FreePascal! |
Сообщ.
#2
,
|
|
|
Uses Linux; Кстати говря - не работает.
Зато откомпилировалось с Uses Unix; Можно ли это использовать или должно быть что-то специальное? Второй вопрос: в коммандной строке fpc не понимает (обычные комманды, вроде touch понимают) названия файла с пробелом, даже заключённое в кавычки, например fpc "/Temp/Untitled 1.Pas" Что можно сделать? |
Сообщ.
#3
,
|
|
|
Всё, типа - приехали?
|
Сообщ.
#4
,
|
|
|
Цитата KIA @ Тебе перевести код на Паскаль, что ли? Всё, типа - приехали? |
Сообщ.
#5
,
|
|
|
Да, а он будет работать? Не нужно какие-нибдуь модули подключать для пользования API системы?
Там ещё и формат вызова процедур под Си надо будет, наверное, закосить.. |
Сообщ.
#6
,
|
|
|
KIA, ты привёл хотя бы рабочий пример на С, чтобы было с чем сравнивать. А то мастеров гадать на кофейной гуще в этом разделе нету.
Добавлено Вот, есть кое-что. Надеюсь, поможет. Source for Mac OS X Добавлено + http://developer.apple.com/referencelibrary/GettingStarted/GS_GraphicsImaging/ + http://en.wikipedia.org/wiki/Quartz_%28graphics_layer%29 |
Сообщ.
#7
,
|
|
|
Ты издеваешься? Я в Си ни бум-бум, как и в API ОС. Я в начале привёл ссылку на Tutorial для начинающих (Quartz 2D Programming Guide: Introduction), но я его не понял настолько, что бы попытаться перевести. Если этого "пособия" не достаточно, говори что конкретно в нём не хватает - попробую поискать ещё что-нибудь.
В кратце, поскольку это *.nix, то графическая подсистема своя, называется она Quartz (для двумерных операций), она достаточно высокоуровневая, мне нужен режим обращения (вид API) к ОС - "Carbon" (это совместимый со старыми ОС, в том числе 9), но для начала пойдёт любой - лишь бы работало (существуют ещё два режима - частично совместимый со старой и чисто от новой системы: Cocoa). На более низком уровне, доступ к графическом режиме: это надо будет мне копать в сторону CoreGraphic, если надо - буду искать, только не знаю, будут ли там примеры.. |
Сообщ.
#8
,
|
|
|
Если будет рабочий пример на Си, то будет о чём говорить. С нуля писать никто не станет.
Добавлено Обратись ещё на форум http://freepascal.ru . Если решишь проблему, напиши как, чтобы и другие знали... |
Сообщ.
#9
,
|
|
|
Я так думаю, что всё что ты нашёл для ОСИкс на Паскале - всё это для ThinKpascal, который был интегрирован достаточно хорошо, то есть там всё решалось подключением соответсвующего модуля и вызова _Паскалевой_ процедуры, либо подключением каких-то интерфейсов (сиё есть для меня великая тайна, но встречал часто).
Добавлено Действительно на ФрииПаскале.. Правда под ИксКоде, но ничего - скачал, не пускается, но есть исходники - буду разбираться. Добавлено Вот чего пишет этот пример от Фрии: kia$ ./'Quartz Demo (2.1)' dyld: ./Quartz Demo (2.1) Undefined symbols: ./Quartz Demo (2.1) undefined reference to _CGContextSetBlendMode expected to be defined in ApplicationServices Trace/BPT trap MacOSXComputer:~/desktop/Quartz Demo (2.1)/Quartz Demo (2.1).app/contents/macos kia$ |
Сообщ.
#10
,
|
|
|
Не понимаю.. вот пример, на который мне дали ссылку: http://pascal-central.com/sourcex/ctrldemo.zip
Он на FreePascal. Но что в нём есть: unit TestUnit; interface uses QuickTime; procedure ShowExamples; implementation И так везде... Ну НЕТ такого модуля во FreePascal, хоть убейся и быть - не может! Да, это стандартный компонент системы, но именно системы и как к нему достучаться - не понятно. На самом деле примеры там для среды разработки, мне, в общем-то это не подходит. Но с другой стороны, ведь там обычный Паскаль, следовательно должны где-то лежать обёртки всех этих QuickTime и прочего? И следовательно их можно оттуда вытянуть. Но как? А ещё лучше, если бы кто-нибудь на базе этих исходников сказал, что я - дебил и ничего такого не нужно, и ткнул меня носом в то место, где это всё работает без всякой среды разработки... |