void MainWindow::reprocess_image_impl(int scale, int quality) { if (! rescale_image(scale)) { return; } if (! requality_image(quality)) { return; } QMetaObject::invokeMethod(this, "show_pixmap"); }
INT_PTR CAimProto::SetAvatar(WPARAM, LPARAM lParam) { TCHAR *szFileName = (TCHAR*)lParam; if (m_state != 1) return 1; if (szFileName == NULL) { aim_ssi_update(m_hServerConn, m_seqno, true); aim_delete_avatar_hash(m_hServerConn, m_seqno, 1, 1, m_avatar_id_sm); aim_delete_avatar_hash(m_hServerConn, m_seqno, 1, 12, m_avatar_id_lg); aim_ssi_update(m_hServerConn, m_seqno, false); avatar_request_handler(NULL, NULL, 0); } else { char hash[16], hash1[16], *data, *data1 = NULL; unsigned short size, size1 = 0; if (!get_avatar_hash(szFileName, hash, &data, size)) { mir_free(hash); return 1; } rescale_image(data, size, data1, size1); if (size1) { mir_md5_state_t state; mir_md5_init(&state); mir_md5_append(&state, (unsigned char*)data1, size1); mir_md5_finish(&state, (unsigned char*)hash1); mir_free(m_hash_lg); m_hash_lg = bytes_to_string(hash, sizeof(hash)); mir_free(m_hash_sm); m_hash_sm = bytes_to_string(hash1, sizeof(hash1)); aim_ssi_update(m_hServerConn, m_seqno, true); aim_set_avatar_hash(m_hServerConn, m_seqno, 1, 1, m_avatar_id_sm, 16, hash1); aim_set_avatar_hash(m_hServerConn, m_seqno, 1, 12, m_avatar_id_lg, 16, hash); aim_ssi_update(m_hServerConn, m_seqno, false); } else { mir_free(m_hash_lg); m_hash_lg = NULL; mir_free(m_hash_sm); m_hash_sm = bytes_to_string(hash, sizeof(hash1)); aim_ssi_update(m_hServerConn, m_seqno, true); aim_set_avatar_hash(m_hServerConn, m_seqno, 1, 1, m_avatar_id_sm, 16, hash); aim_delete_avatar_hash(m_hServerConn, m_seqno, 1, 12, m_avatar_id_lg); aim_ssi_update(m_hServerConn, m_seqno, false); } avatar_request_handler(NULL, NULL, 0); avatar_up_req *req = new avatar_up_req(data, size, data1, size1); ForkThread(&CAimProto::avatar_upload_thread, req); TCHAR tFileName[MAX_PATH]; TCHAR *ext = _tcsrchr(szFileName, '.'); get_avatar_filename(NULL, tFileName, _countof(tFileName), ext); int fileId = _topen(tFileName, _O_CREAT | _O_TRUNC | _O_WRONLY | O_BINARY, _S_IREAD | _S_IWRITE); if (fileId < 0) { char errmsg[512]; mir_snprintf(errmsg, "Cannot store avatar. File '%s' could not be created/overwritten", tFileName); ShowPopup(errmsg, ERROR_POPUP); return 1; } _write(fileId, data, size); _close(fileId); } return 0; }