ui/cocoa/image.m

changeset 1008
6c6ea5cfe334
parent 884
24815a9f071a
equal deleted inserted replaced
1007:a2070417b280 1008:6c6ea5cfe334
105 imageName = imgName; 105 imageName = imgName;
106 } 106 }
107 return [NSImage imageNamed:imageName]; 107 return [NSImage imageNamed:imageName];
108 } 108 }
109 109
110 static UIIMAGE create_image(NSImage *image) {
111 UiImage *img = malloc(sizeof(UiImage));
112 img->nsimage = (__bridge_retained void*)image;
113 img->ref = 1;
114 return img;
115 }
110 116
111 void ui_image_ref(UIIMAGE img) { 117 void ui_image_ref(UIIMAGE img) {
112 // TODO 118 UiImage *image = img;
119 image->ref++;
113 } 120 }
114 121
115 void ui_image_unref(UIIMAGE img) { 122 void ui_image_unref(UIIMAGE img) {
116 // TODO 123 UiImage *image = img;
124 if(--image->ref == 0) {
125 CFRelease(image->nsimage);
126 free(img);
127 }
117 } 128 }
129
130 static int load_image(UiGeneric *obj, NSImage *img) {
131 UIIMAGE image = create_image(img);
132
133 if(obj->set) {
134 obj->set(obj, image, UI_IMAGE_OBJECT_TYPE);
135 ui_image_unref(image);
136 } else {
137 obj->value = image;
138 obj->type = UI_IMAGE_OBJECT_TYPE;
139 }
140
141 return 0;
142 }
143
144 int ui_image_load_file(UiGeneric *obj, const char *path) {
145 NSString *str = [[NSString alloc]initWithUTF8String:path];
146 NSImage *img = [[NSImage alloc]initWithContentsOfFile:str];
147 if(img == nil) {
148 return 1;
149 }
150 return load_image(obj, img);
151 }
152
153 int ui_image_load_data(UiGeneric *obj, const void *imgdata, size_t size) {
154 NSData *data = [NSData dataWithBytes:(void*)imgdata length:size];
155 NSImage *img = [[NSImage alloc] initWithData:data];
156 if(img == nil) {
157 return 1;
158 }
159 return load_image(obj, img);
160 }

mercurial