//--------------------------------------------------------------------------- #include #pragma hdrstop #include //#include //#include //#include //#include //#include //#include //#include #include "ImgCopperExUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #include "GlobalUnit.h" //--------------------------------------------------------------------------- bool GetPicType(String &name, TMemoryStream *tmpMemoryStream, bool bBac) { bool bReturn = true; tmpMemoryStream->Position = 0; WORD wType = 0; tmpMemoryStream->ReadBuffer(&wType, 2); String tmpName = name; if( wType==0x4D42 ){ //bmp if( bBac ) name = ChangeFileExt(name, L".bmp"); }else if( wType==0x5089 ){ //png if( bBac ) name = ChangeFileExt(name, L".png"); }else if( wType==0xD8FF ) { //jpg if( bBac ) name = ChangeFileExt(name, L".jpg"); }else bReturn = false; if( bReturn && bBac ) CopyFile(tmpName.c_str(), name.c_str(), false); return bReturn; } //--------------------------------------------------------------------------- VCBMPEDGE g_VCBMPEDGE; TBitmap* resizableImage(TBitmap *imgDest, TRect rectDest, int tagSrc, String resourceNameSrc, UIEdgeInsets insetsSrc, System::Uitypes::TColor TransparentColor) { // ------judge the image is handled bool bFindBMPEDGE = false; BMPEDGE *pBMPEDGE = NULL; for( VCBMPEDGE::iterator vc_pFindVCBMPEDGE = g_VCBMPEDGE.begin(); vc_pFindVCBMPEDGE != g_VCBMPEDGE.end(); vc_pFindVCBMPEDGE++ ) { if( tagSrc==(*vc_pFindVCBMPEDGE)->iTag ) { pBMPEDGE = *vc_pFindVCBMPEDGE; bFindBMPEDGE = true; break; } } // ------l r t b cl cr ct cb c cn get bitmap if( NULL==pBMPEDGE ) { pBMPEDGE = new BMPEDGE(tagSrc, resourceNameSrc); pBMPEDGE->pImgLeftT = new TBitmap(); pBMPEDGE->pImgLeftB = new TBitmap(); pBMPEDGE->pImgRightT = new TBitmap(); pBMPEDGE->pImgRightB = new TBitmap(); pBMPEDGE->pImgCenterL = new TBitmap(); pBMPEDGE->pImgCenterR = new TBitmap(); pBMPEDGE->pImgCenterT = new TBitmap(); pBMPEDGE->pImgCenterB = new TBitmap(); pBMPEDGE->pImgCenter = new TBitmap(); pBMPEDGE->pImgBMPSrc = new TBitmap(); pBMPEDGE->pImgBMPSrc->LoadFromResourceName(int(HInstance), resourceNameSrc); } TBitmap *imgSrc = pBMPEDGE->pImgBMPSrc; // ------ l r t b cl cr ct cb c cn rect int iLeft, iTop, iWidth, iHeight; int iLeftNew, iTopNew, iWidthNew, iHeightNew; iLeft = 0; iTop = 0; iWidth = imgSrc->Width; iHeight = imgSrc->Height; TRect rectSrc = TRect(0, 0, iWidth, iHeight); iLeftNew = 0; iTopNew = 0; iWidthNew = rectDest.Width(); iHeightNew = rectDest.Height(); UIEdgeInsets insets; if( !bFindBMPEDGE ) { pBMPEDGE->insetsDest.left = insetsSrc.left; pBMPEDGE->insetsDest.right = insetsSrc.right; pBMPEDGE->insetsDest.top = insetsSrc.top; pBMPEDGE->insetsDest.bottom = insetsSrc.bottom; insets = insetsSrc; }else{ insets = pBMPEDGE->insetsDest; } int LEFTT_WIDTH = insets.left; int LEFTT_HEIGHT = insets.top; int LEFTB_WIDTH = insets.left; int LEFTB_HEIGHT = insets.bottom; int RIGHTT_WIDTH = insets.right; int RIGHTT_HEIGHT = insets.top; int RIGHTB_WIDTH = insets.right; int RIGHTB_HEIGHT = insets.bottom; int CENTERL_WIDTH = insets.left; int CENTERL_HEIGHT = rectSrc.Height() - (LEFTT_HEIGHT+LEFTB_HEIGHT); int CENTERR_WIDTH = insets.right; int CENTERR_HEIGHT = iHeight - (RIGHTT_HEIGHT+RIGHTB_HEIGHT); int CENTERT_WIDTH = iWidth - (LEFTT_WIDTH+RIGHTT_WIDTH); int CENTERT_HEIGHT = insets.top; int CENTERB_WIDTH = iWidth - (LEFTB_WIDTH+RIGHTB_WIDTH); int CENTERB_HEIGHT = insets.bottom; int CENTER_WIDTH = CENTERT_WIDTH; int CENTER_HEIGHT = iHeight - (CENTERT_HEIGHT+CENTERB_HEIGHT); int CENTERL_NEW_WIDTH = insets.left; int CENTERL_NEW_HEIGHT = iHeightNew - (LEFTT_HEIGHT+LEFTB_HEIGHT); int CENTERR_NEW_WIDTH = insets.right; int CENTERR_NEW_HEIGHT = CENTERL_NEW_HEIGHT; int CENTERT_NEW_WIDTH = iWidthNew - (LEFTT_WIDTH+RIGHTT_WIDTH); int CENTERT_NEW_HEIGHT = insets.top; int CENTERB_NEW_WIDTH = CENTERT_NEW_WIDTH; int CENTERB_NEW_HEIGHT = insets.bottom; int CENTER_NEW_WIDTH = CENTERT_NEW_WIDTH; int CENTER_NEW_HEIGHT = CENTERL_NEW_HEIGHT; // ------ size transparent TBitmap *pImgLeftT = pBMPEDGE->pImgLeftT; TBitmap *pImgLeftB = pBMPEDGE->pImgLeftB; TBitmap *pImgRightT = pBMPEDGE->pImgRightT; TBitmap *pImgRightB = pBMPEDGE->pImgRightB; TBitmap *pImgCenterL = pBMPEDGE->pImgCenterL; TBitmap *pImgCenterR = pBMPEDGE->pImgCenterR; TBitmap *pImgCenterT = pBMPEDGE->pImgCenterT; TBitmap *pImgCenterB = pBMPEDGE->pImgCenterB; TBitmap *pImgCenter = pBMPEDGE->pImgCenter; if( !bFindBMPEDGE ) { pImgLeftT->SetSize( LEFTT_WIDTH, LEFTT_HEIGHT ); pImgLeftB->SetSize( LEFTB_WIDTH, LEFTB_HEIGHT ); pImgRightT->SetSize( RIGHTT_WIDTH, RIGHTT_HEIGHT ); pImgRightB->SetSize( RIGHTB_WIDTH, RIGHTB_HEIGHT ); pImgCenterL->SetSize( CENTERL_WIDTH, CENTERL_HEIGHT); pImgCenterR->SetSize( CENTERR_WIDTH, CENTERR_HEIGHT); pImgCenterT->SetSize( CENTERT_WIDTH, CENTERT_HEIGHT); pImgCenterB->SetSize( CENTERB_WIDTH, CENTERB_HEIGHT); pImgCenter->SetSize( CENTER_WIDTH, CENTER_HEIGHT ); pBMPEDGE->SetTransparent(TransparentColor); } if( NULL==imgDest ) { imgDest = new TBitmap(); imgDest->SetSize(iWidthNew, iHeightNew); } imgDest->Transparent = true; imgDest->TransparentColor = clWhite; // ------new bitmap if( !bFindBMPEDGE ) { // ----- StretchBlt(pImgLeftT->Canvas->Handle, 0, 0, LEFTT_WIDTH, LEFTT_HEIGHT, imgSrc->Canvas->Handle, 0, 0, LEFTT_WIDTH, LEFTT_HEIGHT, SRCCOPY); StretchBlt(pImgLeftB->Canvas->Handle, 0, 0, LEFTB_WIDTH, LEFTB_HEIGHT, imgSrc->Canvas->Handle, 0, iHeight-LEFTB_HEIGHT, LEFTB_WIDTH, LEFTB_HEIGHT, SRCCOPY); StretchBlt(pImgRightT->Canvas->Handle, 0, 0, RIGHTT_WIDTH, RIGHTT_HEIGHT, imgSrc->Canvas->Handle, iWidth-RIGHTT_WIDTH, 0, RIGHTT_WIDTH, RIGHTT_HEIGHT, SRCCOPY); StretchBlt(pImgRightB->Canvas->Handle, 0, 0, RIGHTB_WIDTH, RIGHTB_HEIGHT, imgSrc->Canvas->Handle, iWidth-RIGHTB_WIDTH, iHeight-RIGHTB_HEIGHT, RIGHTB_WIDTH, RIGHTB_HEIGHT, SRCCOPY); StretchBlt(pImgCenterL->Canvas->Handle, 0, 0, CENTERL_WIDTH, CENTERL_HEIGHT, imgSrc->Canvas->Handle, 0, LEFTT_HEIGHT, CENTERL_WIDTH, CENTERL_HEIGHT, SRCCOPY); StretchBlt(pImgCenterR->Canvas->Handle, 0, 0, CENTERR_WIDTH, CENTERR_HEIGHT, imgSrc->Canvas->Handle, iWidth-RIGHTT_WIDTH, RIGHTT_HEIGHT, CENTERR_WIDTH, CENTERR_HEIGHT, SRCCOPY); StretchBlt(pImgCenterT->Canvas->Handle, 0, 0, CENTERT_WIDTH, CENTERT_HEIGHT, imgSrc->Canvas->Handle, LEFTT_WIDTH, 0, CENTERT_WIDTH, CENTERT_HEIGHT, SRCCOPY); StretchBlt(pImgCenterB->Canvas->Handle, 0, 0, CENTERB_WIDTH, CENTERB_HEIGHT, imgSrc->Canvas->Handle, LEFTB_WIDTH, iHeight-LEFTB_HEIGHT, CENTERB_WIDTH, CENTERB_HEIGHT, SRCCOPY); StretchBlt(pImgCenter->Canvas->Handle, 0, 0, CENTER_WIDTH, CENTER_HEIGHT, imgSrc->Canvas->Handle, LEFTT_WIDTH, LEFTT_HEIGHT, CENTER_WIDTH, CENTER_HEIGHT, SRCCOPY); } // ----- StretchBlt(imgDest->Canvas->Handle, 0, 0, LEFTT_WIDTH, LEFTT_HEIGHT, pImgLeftT->Canvas->Handle, 0, 0, LEFTT_WIDTH, LEFTT_HEIGHT, SRCCOPY); StretchBlt(imgDest->Canvas->Handle, 0, iHeightNew-LEFTB_HEIGHT, LEFTB_WIDTH, LEFTB_HEIGHT, pImgLeftB->Canvas->Handle, 0, 0, LEFTB_WIDTH, LEFTB_HEIGHT, SRCCOPY); StretchBlt(imgDest->Canvas->Handle, iWidthNew-RIGHTT_WIDTH, 0, RIGHTT_WIDTH, RIGHTT_HEIGHT, pImgRightT->Canvas->Handle, 0, 0, RIGHTT_WIDTH, RIGHTT_HEIGHT, SRCCOPY); StretchBlt(imgDest->Canvas->Handle, iWidthNew-RIGHTB_WIDTH, iHeightNew-RIGHTB_HEIGHT, RIGHTB_WIDTH, RIGHTB_HEIGHT, pImgRightB->Canvas->Handle, 0, 0, RIGHTB_WIDTH, RIGHTB_HEIGHT, SRCCOPY); StretchBlt(imgDest->Canvas->Handle, 0, LEFTT_HEIGHT, CENTERL_NEW_WIDTH, CENTERL_NEW_HEIGHT, pImgCenterL->Canvas->Handle,0, 0, CENTERL_WIDTH, CENTERL_HEIGHT, SRCCOPY); StretchBlt(imgDest->Canvas->Handle, iWidthNew-RIGHTT_WIDTH, RIGHTT_HEIGHT, CENTERR_NEW_WIDTH, CENTERR_NEW_HEIGHT, pImgCenterR->Canvas->Handle,0, 0, CENTERR_WIDTH, CENTERR_HEIGHT, SRCCOPY); StretchBlt(imgDest->Canvas->Handle, LEFTT_WIDTH, 0, CENTERT_NEW_WIDTH, CENTERT_NEW_HEIGHT, pImgCenterT->Canvas->Handle,0, 0, CENTERT_WIDTH, CENTERT_HEIGHT, SRCCOPY); StretchBlt(imgDest->Canvas->Handle, LEFTT_WIDTH, iHeightNew-LEFTB_HEIGHT, CENTERB_NEW_WIDTH, CENTERB_NEW_HEIGHT, pImgCenterB->Canvas->Handle,0, 0, CENTERB_WIDTH, CENTERB_HEIGHT, SRCCOPY); StretchBlt(imgDest->Canvas->Handle, LEFTT_WIDTH, LEFTT_HEIGHT, CENTER_NEW_WIDTH, CENTER_NEW_HEIGHT, pImgCenter->Canvas->Handle, 0, 0, CENTER_WIDTH, CENTER_HEIGHT, SRCCOPY); if( !bFindBMPEDGE ) { g_VCBMPEDGE.push_back(pBMPEDGE); } return imgDest; } //--------------------------------------------------------------------------- TThreadMusciCover *g_pTThreadMusciCover = NULL; __fastcall TThreadMusciCover::TThreadMusciCover(bool CreateSuspended, TForm *Form) : TThread(CreateSuspended) { m_pForm = Form; } //--------------------------------------------------------------------------- void __fastcall TThreadMusciCover::Execute() { TStringStream *strStream = new TStringStream(NULL, 65001); String strUrl = g_strServerURL; strUrl += L"/index.php/Client/getUserMusicCover/userId/"; strUrl += IntToStr(g_infoUser.accountInfo.ID); String dir = MUSIC_COVER_DIR; String file = L"tmp"; HRESULT result = GetUrlData(strUrl, dir, file, strStream, true, UrlDown_ImageCover); strUrl = strStream->DataString; delete strStream; if( !(result==S_OK && strUrl.Length() > 1) ){ return; } file = MUSIC_COVER_FILE; if( S_OK==GetUrlData(strUrl, dir, file, NULL, false, UrlDown_ImageCover) ) { PostMessage(m_pForm->Handle, UM_MUSICCOVER, 0, 0 ); } } //--------------------------------------------------------------------------- TThreadHttpPostUsrIcon *g_pTThreadHttpPostUsrIcon = NULL; __fastcall TThreadHttpPostUsrIcon::TThreadHttpPostUsrIcon(bool CreateSuspended, TWinControl *pWnCtrl, String strPath) : TThread(CreateSuspended) { m_pWnCtrl = pWnCtrl; m_strPath = strPath; } //--------------------------------------------------------------------------- void __fastcall TThreadHttpPostUsrIcon::Execute() { String strFileName = L""; bool bSucess = true; String strUrl = g_strServerURL; strUrl += L"/index.php/Client/uploadUserPortrait"; String struserId = IntToStr(g_infoUser.accountInfo.ID); String strusername = g_infoUser.strUserName; String strpassword = g_infoUser.strPassword; String strCopperPath = m_strPath; TIdMultiPartFormDataStream *stream = new TIdMultiPartFormDataStream(); stream->AddFormField(L"userId", struserId); stream->AddFormField(L"username", strusername, L"UTF-8")->ContentTransfer = L"8bit"; stream->AddFormField(L"password", strpassword, L"UTF-8")->ContentTransfer = L"8bit"; stream->AddFile(L"Filedata", strCopperPath, L"image/jpg"); String strResJson; TIdHTTP *httpPost = NULL; try{ httpPost = new TIdHTTP(); httpPost->Request->ContentType = L"multipart/form-data;"; strResJson = httpPost->Post(strUrl, stream); }catch(Exception &e) { SAFE_DELETE(httpPost); SAFE_DELETE(stream); return; } TJSONObject *jsonOri = NULL; int nState = -1; try { jsonOri = GetJsonContext(strResJson); if( jsonOri!=NULL ) { TJSONObject *ValueState = GetJsonValue(jsonOri, 0); if( ValueState!=NULL ) { nState = StrToInt(ValueState->Value()); if( 1==nState ) { TJSONObject *ValueFileName = GetJsonValue(jsonOri, 1); if( ValueFileName!=NULL ) strFileName = ValueFileName->Value(); } } } SAFE_DELETE(jsonOri); }catch(Exception &e){ SAFE_DELETE(jsonOri); SAFE_DELETE(httpPost); SAFE_DELETE(stream); return; } SAFE_DELETE(httpPost); SAFE_DELETE(stream); m_strFileName = strFileName; PostMessage(m_pWnCtrl->Handle, UM_UPLOADUSRICON, 0, 0 ); } //---------------------------------------------------------------------------