2015-07-28 3 views
1

Я изучаю ракетку, написав приложение SDL, но я не знаю, как инициализировать структуру прямоугольника. Это определено в рэкет-SDL следующим образом:Инициализация прямоугольника SDL в Racket и racket-sdl

(define-cstruct _SDL_Rect 
    ([x _int] 
    [y _int] 
    [w _int] 
    [h _int])) 

Как создать экземпляр прямоугольника? В частности, я хочу, чтобы создать прямоугольник, чтобы перейти в следующую функцию в качестве последнего параметра:

(SDL_BlitSurface hello-world-surface #f screen-surface #f) 

ответ

3

Прежде всего, если вы только начинаете с ракеткой, я рекомендовал бы использовать некоторые из упакованных библиотек для рисунок, например, GUI library's canvas или OpenGL library.

racket-sdl project, всего лишь 3 коммиты (последний из которых 2 года), мне кажется не более чем экзамен по выполнимости.

Тем не менее, ваш вопрос действительно, поэтому давайте дадим вам ответ. (define-cstruct ...) определяет C struct по существу как указатель, поэтому у вас нет очевидных средств для изменения его внутренних компонентов. Вы можете создать небольшую библиотеку-оболочку в C с помощью функции make_SDL_Rect и использовать ее, но это не стоит хлопот. Было бы лучше определить тип SDL_Rect, используя make-cstruct-type, что позволяет преобразовывать параметры.

Дополнительная информация на странице the FFI manual.

Смежные вопросы