示例#1
0
	value lime_cairo_get_font_face (value handle) {
		
		cairo_font_face_t* face = cairo_get_font_face ((cairo_t*)val_data (handle));
		cairo_font_face_reference (face);
		return CFFIPointer (face, gc_cairo_font_face);
		
	}
示例#2
0
	value lime_alc_open_device (HxString devicename) {
		
		ALCdevice* alcDevice = alcOpenDevice (devicename.__s);
		atexit (lime_al_cleanup);
		return CFFIPointer (alcDevice);
		
	}
示例#3
0
	value lime_alc_create_context (value device, value attrlist) {
		
		ALCdevice* alcDevice = (ALCdevice*)val_data (device);
		
		ALCint* list = NULL;
		
		if (val_is_null (attrlist) == false) {
			
			int size = val_array_size (attrlist);
			list = new ALCint[size];
			
			for (int i = 0; i < size; ++i) {
				list[i] = (ALCint)val_int( val_array_i (attrlist, i) );
			}
			
		}
		
		ALCcontext* alcContext = alcCreateContext (alcDevice, list);
		
		if (list != NULL) {
			delete[] list;
		}
		
		return CFFIPointer (alcContext);
		
	}
示例#4
0
	value lime_alc_get_contexts_device (value context) {
		
		ALCcontext* alcContext = (ALCcontext*)val_data (context);
		ALCdevice* alcDevice = alcGetContextsDevice (alcContext);
		return CFFIPointer (alcDevice);
		
	}
示例#5
0
	value lime_application_create (value callback) {
		
		Application* application = CreateApplication ();
		Application::callback = new AutoGCRoot (callback);
		return CFFIPointer (application, gc_application);
		
	}
示例#6
0
	value lime_cairo_get_font_options (value handle) {
		
		cairo_font_options_t* options = 0;
		cairo_get_font_options ((cairo_t*)val_data (handle), options);
		return CFFIPointer (options, gc_cairo_font_options);
		
	}
示例#7
0
	value lime_cairo_get_target (value handle) {
		
		cairo_surface_t* surface = cairo_get_target ((cairo_t*)val_data (handle));
		cairo_surface_reference (surface);
		return CFFIPointer (surface, gc_cairo_surface);
		
	}
示例#8
0
	value lime_cairo_pop_group (value handle) {
		
		cairo_pattern_t* pattern = cairo_pop_group ((cairo_t*)val_data (handle));
		cairo_pattern_reference (pattern);
		return CFFIPointer (pattern, gc_cairo_pattern);
		
	}
示例#9
0
	value lime_text_layout_create (int direction, HxString script, HxString language) {
		
		#if defined(LIME_FREETYPE) && defined(LIME_HARFBUZZ)
		
		TextLayout *text = new TextLayout (direction, script.__s, language.__s);
		return CFFIPointer (text, gc_text_layout);
		
		#else
		
		return alloc_null ();
		
		#endif
		
	}
示例#10
0
	value lime_cairo_ft_font_face_create (value face, int flags) {
		
		#ifdef LIME_FREETYPE
		Font* font = (Font*)val_data (face);
		cairo_font_face_t* cairoFont = cairo_ft_font_face_create_for_ft_face ((FT_Face)font->face, flags);
		
		AutoGCRoot* fontReference = new AutoGCRoot (face);
		cairo_font_face_set_user_data (cairoFont, &userData, fontReference, gc_user_data);
		
		return CFFIPointer (cairoFont, gc_cairo_font_face);
		#else
		return 0;
		#endif
		
	}
示例#11
0
	value lime_cairo_image_surface_create_for_data (value inData, int format, int width, int height, int stride) {
		
		Bytes *data = new Bytes (inData);
		cairo_surface_t *surface = cairo_image_surface_create_for_data (data->Data (), (cairo_format_t)format, width, height, stride);
		
		if (!surface) {
			
			delete data;
			return alloc_null ();
			
		}
		
		data->Pin ();
		cairo_surface_set_user_data (surface, &userData, data, gc_bytes);
		
		return CFFIPointer (surface, gc_cairo_surface);
		
	}
示例#12
0
	value lime_font_load (value data) {
		
		#ifdef LIME_FREETYPE
		Resource resource;
		Bytes bytes;
		
		if (val_is_string (data)) {
			
			resource = Resource (val_string (data));
			
		} else {
			
			bytes.Set (data);
			resource = Resource (&bytes);
			
		}
		
		Font *font = new Font (&resource, 0);
		
		if (font) {
			
			if (font->face) {
				
				return CFFIPointer (font, gc_font);
				
			} else {
				
				delete font;
				
			}
			
		}
		#endif
		
		return alloc_null ();
		
	}
示例#13
0
	value lime_cairo_pattern_create_for_surface (value surface) {
		
		cairo_pattern_t* pattern = cairo_pattern_create_for_surface ((cairo_surface_t*)val_data (surface));
		return CFFIPointer (pattern, gc_cairo_pattern);
		
	}
示例#14
0
	value lime_cairo_image_surface_create_for_data (double data, int format, int width, int height, int stride) {
		
		cairo_surface_t* surface = cairo_image_surface_create_for_data ((unsigned char*)(intptr_t)data, (cairo_format_t)format, width, height, stride);
		return CFFIPointer (surface, gc_cairo_surface);
		
	}
示例#15
0
	value lime_cairo_image_surface_create (int format, int width, int height) {
		
		cairo_surface_t* surface = cairo_image_surface_create ((cairo_format_t)format, width, height);
		return CFFIPointer (surface, gc_cairo_surface);
		
	}
示例#16
0
	value lime_window_create (value application, int width, int height, int flags, HxString title) {
		
		Window* window = CreateWindow ((Application*)val_data (application), width, height, flags, title.__s);
		return CFFIPointer (window, gc_window);
		
	}
示例#17
0
	value lime_alc_get_current_context () {
		
		ALCcontext* alcContext = alcGetCurrentContext ();
		return CFFIPointer (alcContext);
		
	}
示例#18
0
	value lime_cairo_pattern_create_linear (double x0, double y0, double x1, double y1) {
		
		cairo_pattern_t* pattern = cairo_pattern_create_linear (x0, y0, x1, y1);
		return CFFIPointer (pattern, gc_cairo_pattern);
		
	}
示例#19
0
	value lime_cairo_pattern_create_rgba (double r, double g, double b, double a) {
		
		cairo_pattern_t* pattern = cairo_pattern_create_rgba (r, g, b, a);
		return CFFIPointer (pattern, gc_cairo_pattern);
		
	}
示例#20
0
	value lime_cairo_pattern_create_radial (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1) {
		
		cairo_pattern_t* pattern = cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1);
		return CFFIPointer (pattern, gc_cairo_pattern);
		
	}
示例#21
0
	value lime_cairo_create (value surface) {
		
		cairo_t* cairo = cairo_create ((cairo_surface_t*)val_data (surface));
		return CFFIPointer (cairo, gc_cairo);
		
	}
示例#22
0
	value lime_cairo_font_options_create () {
		
		return CFFIPointer (cairo_font_options_create (), gc_cairo_font_options);
		
	}
示例#23
0
	value lime_renderer_create (value window) {
		
		Renderer* renderer = CreateRenderer ((Window*)val_data (window));
		return CFFIPointer (renderer, gc_renderer);
		
	}