ExpandCelCanvas::ExpandCelCanvas(DocumentLocation location, TiledMode tiledMode, Transaction& transaction, Flags flags) : m_document(location.document()) , m_sprite(location.sprite()) , m_layer(location.layer()) , m_cel(NULL) , m_celImage(NULL) , m_celCreated(false) , m_flags(flags) , m_srcImage(NULL) , m_dstImage(NULL) , m_closed(false) , m_committed(false) , m_transaction(transaction) { create_buffers(); if (m_layer->isImage()) { m_cel = m_layer->cel(location.frame()); if (m_cel) m_celImage = m_cel->imageRef(); } // Create a new cel if (m_cel == NULL) { m_celCreated = true; m_cel = new Cel(location.frame(), ImageRef(NULL)); } m_origCelPos = m_cel->position(); // Region to draw gfx::Rect celBounds( m_cel->x(), m_cel->y(), m_celImage ? m_celImage->width(): m_sprite->width(), m_celImage ? m_celImage->height(): m_sprite->height()); gfx::Rect spriteBounds(0, 0, m_sprite->width(), m_sprite->height()); if (tiledMode == TiledMode::NONE) { // Non-tiled m_bounds = celBounds.createUnion(spriteBounds); } else { // Tiled m_bounds = spriteBounds; } // We have to adjust the cel position to match the m_dstImage // position (the new m_dstImage will be used in RenderEngine to // draw this cel). m_cel->setPosition(m_bounds.x, m_bounds.y); if (m_celCreated) { getDestCanvas(); m_cel->data()->setImage(m_dstImage); static_cast<LayerImage*>(m_layer)->addCel(m_cel); } }
ImageRef ExpandCelCanvas::trimDstImage(const gfx::Rect& bounds) const { return ImageRef( crop_image(m_dstImage.get(), bounds.x, bounds.y, bounds.w, bounds.h, m_dstImage->maskColor())); }
ImageRef Sprite::getImageRef(ObjectId imageId) { for (Cel* cel : cels()) { if (cel->image()->id() == imageId) return cel->imageRef(); } return ImageRef(nullptr); }
double ShiTomasi_score ( Image<unsigned char, MONO> & image, int nHalfBoxSize, ImageRef irCenter) { double dXX = 0; double dYY = 0; double dXY = 0; ImageRef irStart = irCenter - ImageRef(nHalfBoxSize, nHalfBoxSize); ImageRef irEnd = irCenter + ImageRef(nHalfBoxSize, nHalfBoxSize); ImageRef ir ; for(ir.y = irStart.y; ir.y<=irEnd.y; ir.y++) for(ir.x = irStart.x; ir.x<=irEnd.x; ir.x++) { double dx = image(ir + ImageRef(1,0)) - image(ir - ImageRef(1,0)); double dy = image(ir + ImageRef(0,1)) - image(ir - ImageRef(0,1)); dXX += dx*dx; dYY += dy*dy; dXY += dx*dy; } int nPixels = (irEnd - irStart + ImageRef(1,1)).area(); dXX = dXX / (2.0 * nPixels); dYY = dYY / (2.0 * nPixels); dXY = dXY / (2.0 * nPixels); return 0.5 * (dXX + dYY - sqrt( (dXX + dYY) * (dXX + dYY) - 4 * (dXX * dYY - dXY * dXY) )); }
// static Cel* Cel::createCopy(const Cel* other) { Cel* cel = new Cel(other->frame(), ImageRef(Image::createCopy(other->image()))); cel->setPosition(other->position()); cel->setOpacity(other->opacity()); return cel; }
void VcardForm::onWmUserUpdate() { //std::string xml=*(vcard->toXML()); //const std::string &xml2=XMLStringPrep(xml); //const std::wstring xml3=utf8::utf8_wchar(xml2); //SendMessage(hwndHTML, WM_SETTEXT, 0, (LPARAM)""); img.reset(); std::wstring imgFile=appRootPath+L"$tmpimg.jpg"; if (savePhoto(imgFile.c_str())) img=ImageRef(new Image(imgFile.c_str())); startHtml(); addImg(L"\\vcard"); beginForm("vcard-photo", "photo"); if (img) if (img->getHBmp()) { button("save",std::string("Save")); if (editForm) button("clear",std::string("Clear")); } if (editForm) button("load",std::string("Load")); addText("<BR>"); endForm(); beginForm("vcard-fields", "publish"); addHtmlField("FN", NULL, "Full Name", TXT); addHtmlField("NICKNAME", NULL, "Nickname", TXT); addHtmlField("BDAY", NULL, "Birthday", TXT); addHtmlField("ADR", "STREET", "Street", TXT); addHtmlField("ADR", "EXTADR", "Street2", TXT); addHtmlField("ADR", "LOCALITY", "City", TXT); addHtmlField("ADR", "REGION", "State", TXT); addHtmlField("ADR", "PCODE", "Post code", TXT); addHtmlField("ADR", "CTRY", "Country", TXT); addHtmlField("TEL", "HOME", "Home Phone Number", TXT); addHtmlField("TEL", "NUMBER", "Phone Number", TXT); addHtmlField("EMAIL", "USERID", "E-Mail", URL); addHtmlField("TITLE", NULL, "Position", TXT); addHtmlField("ROLE", NULL, "Role", TXT); addHtmlField("ORG", "ORGNAME", "Organization", TXT); addHtmlField("ORG", "ORGUNIT", "Dept", TXT); addHtmlField("URL", NULL, "Url", URL); addHtmlField("DESC", NULL, "About", MULTILINE); if (editForm) button(std::string("Publish")); //button("reload",std::string("Reload")); endForm(); endHtml(); }
BOOL VcardForm::savePhoto( LPCTSTR path ) { if (!vcard) return FALSE; JabberDataBlockRef vcardTemp=vcard->findChildNamespace("vCard", "vcard-temp"); if (!vcardTemp) return FALSE; JabberDataBlockRef photo=vcardTemp->getChildByName("PHOTO"); if (!photo) return FALSE; JabberDataBlockRef binval=photo->getChildByName("BINVAL"); if (!binval) return FALSE; const std::string &data=binval->getText(); int dstLen=base64::base64DecodeGetLength(data.length()); char *dst=new char[dstLen]; dstLen=base64::base64Decode2(dst, data.c_str(), data.length()); wchar_t filename[MAX_PATH]; if (!path) { wchar_t *extm=ext[detectMime(dst)]; *filename=0; wcscpy_s(filename, MAX_PATH, extm); OPENFILENAME ofn; memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize=sizeof(OPENFILENAME); ofn.hwndOwner=getHWnd(); ofn.hInstance=g_hInst; //GetModuleHandle(NULL); ofn.lpstrFilter=FILEIMGMASK; ofn.nFilterIndex=0; ofn.lpstrFile=filename; ofn.nMaxFile=MAX_PATH; //ofn.lpstrInitialDir = ; ofn.lpstrTitle=L"Save image as"; ofn.lpstrDefExt=extm+2; ofn.Flags=OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; BOOL result = GetSaveFileNameEx(&ofn); if (!result) return FALSE; path=filename; } std::string vcard_to = vcard->getAttribute("from"); size_t i=0; while (i<vcard_to.length()) { if (vcard_to[i]=='/') { vcard_to[i]='.'; continue; } i++; } //Log::getInstance()->msg("[***]CASHED Image OK("+vcard_from.substr(0,vcard_from.find("/",0))+")"); std::wstring new_path = appRootPath + L"userdata\\avatars\\" + utf8::utf8_wchar(vcard_to) + L".jpg"; std::wstring imageFile=appRootPath + L"userdata\\avatars\\" + utf8::utf8_wchar(vcard_to) + L".jpg"; //int result=MessageBox(NULL, new_path.c_str(), TEXT("123"), MB_YESNO | MB_ICONWARNING ); LPCTSTR path_save=imageFile.c_str(); Log::getInstance()->msg("[***Get.]("+vcard_to+")"); HANDLE file=CreateFile(path_save, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, 0, NULL); DWORD dwProcessed; if (file==INVALID_HANDLE_VALUE) { delete dst; return FALSE; } WriteFile(file, dst, dstLen, &dwProcessed, NULL); CloseHandle(file); //создание файла Contact::ref contact; contact=rc.lock()->roster->getContactEntry(vcard_to); contact->img_avatar.reset(); contact->img_avatar=ImageRef(new Image(imageFile.c_str())); img.reset(); img=ImageRef(new Image(imageFile.c_str())); Log::getInstance()->msg("[***SUCCESS.]("+contact->statusMessage+")"); //привязка к контакту /* void Log::msg(const std::string &message){ addLog(utf8::utf8_wchar(message).c_str()); } void Log::addLog(const wchar_t * msg) {} */ delete dst; return TRUE; }
Expr DynImage::operator()(const Expr &a, const Expr &b, const Expr &c, const Expr &d) const { return ImageRef(*this, a*stride(0) + b*stride(1) + c*stride(2) + d*stride(3)); }
Expr DynImage::operator()(const Expr &a, const Expr &b) const { return ImageRef(*this, a*stride(0) + b*stride(1)); }
ExpandCelCanvas::ExpandCelCanvas( Site site, Layer* layer, TiledMode tiledMode, Transaction& transaction, Flags flags) : m_document(static_cast<app::Document*>(site.document())) , m_sprite(site.sprite()) , m_layer(layer) , m_frame(site.frame()) , m_cel(NULL) , m_celImage(NULL) , m_celCreated(false) , m_flags(flags) , m_srcImage(NULL) , m_dstImage(NULL) , m_closed(false) , m_committed(false) , m_transaction(transaction) , m_canCompareSrcVsDst((m_flags & NeedsSource) == NeedsSource) { ASSERT(!singleton); singleton = this; create_buffers(); if (m_layer && m_layer->isImage()) { m_cel = m_layer->cel(site.frame()); if (m_cel) m_celImage = m_cel->imageRef(); } // Create a new cel if (!m_cel) { m_celCreated = true; m_cel = new Cel(site.frame(), ImageRef(NULL)); } m_origCelPos = m_cel->position(); // Region to draw gfx::Rect celBounds( m_cel->x(), m_cel->y(), m_celImage ? m_celImage->width(): m_sprite->width(), m_celImage ? m_celImage->height(): m_sprite->height()); gfx::Rect spriteBounds(0, 0, m_sprite->width(), m_sprite->height()); if (tiledMode == TiledMode::NONE) { // Non-tiled m_bounds = celBounds.createUnion(spriteBounds); } else { // Tiled m_bounds = spriteBounds; } // We have to adjust the cel position to match the m_dstImage // position (the new m_dstImage will be used in RenderEngine to // draw this cel). m_cel->setPosition(m_bounds.x, m_bounds.y); if (m_celCreated) { getDestCanvas(); m_cel->data()->setImage(m_dstImage); if (m_layer && m_layer->isImage()) static_cast<LayerImage*>(m_layer)->addCel(m_cel); } }