コード例 #1
0
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);
  }
}
コード例 #2
0
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()));
}
コード例 #3
0
ファイル: sprite.cpp プロジェクト: airways/aseprite
ImageRef Sprite::getImageRef(ObjectId imageId)
{
  for (Cel* cel : cels()) {
    if (cel->image()->id() == imageId)
      return cel->imageRef();
  }
  return ImageRef(nullptr);
}
コード例 #4
0
ファイル: shitomasi.cpp プロジェクト: Kristishka/libvision
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) ));
}
コード例 #5
0
ファイル: cel.cpp プロジェクト: imeteora/aseprite
// 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;
}
コード例 #6
0
ファイル: VcardForm.cpp プロジェクト: evgs/bombus-ng
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();
}
コード例 #7
0
ファイル: VcardForm.cpp プロジェクト: m8r-ds1twq/bombusng-qd
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;
}
コード例 #8
0
ファイル: Image.cpp プロジェクト: gabriel-kent/Halide
 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));
 }
コード例 #9
0
ファイル: Image.cpp プロジェクト: gabriel-kent/Halide
 Expr DynImage::operator()(const Expr &a, const Expr &b) const {
     return ImageRef(*this, a*stride(0) + b*stride(1));
 }
コード例 #10
0
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);
  }
}