| 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 } |