int set_avatar(AVATAR *avatar, const uint8_t *data, uint32_t size) { if (size > UTOX_AVATAR_MAX_DATA_LENGTH) { debug("Avatars:\t avatar too large\n"); return 0; } uint16_t w, h; UTOX_NATIVE_IMAGE *image = png_to_image((UTOX_PNG_IMAGE)data, size, &w, &h, 1); if(!UTOX_NATIVE_IMAGE_IS_VALID(image)) { debug("Avatars:\t avatar is invalid\n"); return 0; } else { avatar_free_image(avatar); avatar->image = image; avatar->width = w; avatar->height = h; avatar->format = UTOX_AVATAR_FORMAT_PNG; tox_hash(avatar->hash, data, size); return 1; } }
void friend_recvimage(FRIEND *f, void *pngdata, uint32_t size) { uint16_t width, height; void *data = png_to_image(pngdata, &width, &height, size); if(!data) { return; } MSG_IMG *msg = malloc(sizeof(MSG_IMG)); msg->flags = 4; msg->w = width; msg->h = height; msg->zoom = 0; msg->data = data; msg->position = 0.0; message_add(&messages_friend, (void*)msg, &f->msg); }
void friend_recvimage(FRIEND *f, UTOX_PNG_IMAGE png_image, size_t png_size) { uint16_t width, height; UTOX_NATIVE_IMAGE *native_image = png_to_image(png_image, png_size, &width, &height, 0); if(!UTOX_NATIVE_IMAGE_IS_VALID(native_image)) { return; } MSG_IMG *msg = malloc(sizeof(MSG_IMG)); msg->author = 0; msg->msg_type = MSG_TYPE_IMAGE; msg->w = width; msg->h = height; msg->zoom = 0; msg->image = native_image; msg->position = 0.0; message_add(&messages_friend, (void*)msg, &f->msg); }