Skip to content

Commit

Permalink
Merge branch 'master' of github.com:openframeworks/openFrameworks
Browse files Browse the repository at this point in the history
  • Loading branch information
arturoc committed Jul 8, 2011
2 parents d600f2c + 84fe3dc commit 6c662b1
Show file tree
Hide file tree
Showing 6 changed files with 164 additions and 39 deletions.
30 changes: 20 additions & 10 deletions addons/ofxAndroid/ofAndroidLib/src/cc/openframeworks/OFAndroid.java
Expand Up @@ -266,22 +266,32 @@ static public String getStringRes(String idStr){
}

static public boolean isOnline(){
ConnectivityManager conMgr = (ConnectivityManager)ofActivity.getSystemService(Context.CONNECTIVITY_SERVICE);

return conMgr!=null && ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ) ;
try{
ConnectivityManager conMgr = (ConnectivityManager)ofActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
return conMgr!=null && ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED
|| conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ) ;
}catch(Exception e){
return false;
}
}

static public boolean isWifiOnline(){
ConnectivityManager conMgr = (ConnectivityManager)ofActivity.getSystemService(Context.CONNECTIVITY_SERVICE);

return conMgr!=null && ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ) ;
try{
ConnectivityManager conMgr = (ConnectivityManager)ofActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
return conMgr!=null && ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ) ;
}catch(Exception e){
return false;
}
}

static public boolean isMobileOnline(){
ConnectivityManager conMgr = (ConnectivityManager)ofActivity.getSystemService(Context.CONNECTIVITY_SERVICE);

return conMgr!=null && ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ) ;
try{
ConnectivityManager conMgr = (ConnectivityManager)ofActivity.getSystemService(Context.CONNECTIVITY_SERVICE);

return conMgr!=null && ( conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ) ;
}catch(Exception e){
return false;
}
}


Expand Down
27 changes: 10 additions & 17 deletions addons/ofxAssimpModelLoader/src/ofxAssimpModelLoader.cpp
Expand Up @@ -141,7 +141,8 @@ bool ofxAssimpModelLoader::loadModel(string modelName, bool optimize){


// Load our new path.
filepath = ofToDataPath(modelName);
filepath = modelName;
string filepath = ofToDataPath(modelName);

//theo added - so we can have models and their textures in sub folders
modelFolder = ofFilePath::getEnclosingDirectory(filepath);
Expand Down Expand Up @@ -304,24 +305,16 @@ void ofxAssimpModelLoader::loadGLResources(){

// TODO: handle other aiTextureTypes
if(AI_SUCCESS == mtl->GetTexture(aiTextureType_DIFFUSE, texIndex, &texPath)){
// This is magic. Thanks Kyle.

ofLog(OF_LOG_VERBOSE, "loading image from %s", texPath.data);
string modelFolder = ofFilePath::getEnclosingDirectory(filepath);

if(ofFilePath::isAbsolute(texPath.data) && ofFile::doesFileExist(texPath.data)) {
if(!ofLoadImage(meshHelper.texture,texPath.data)){
ofLog(OF_LOG_ERROR,string("error loading image ") + texPath.data);
}
}
else {
if(!ofLoadImage(meshHelper.texture,modelFolder + texPath.data)){
ofLog(OF_LOG_ERROR,"error loading image " + modelFolder + texPath.data);
}
string modelFolder = ofFilePath::getEnclosingDirectory(filepath,false);
string relTexPath = ofFilePath::getEnclosingDirectory(texPath.data,false);
string texFile = ofFilePath::getFileName(texPath.data);
string realPath = modelFolder + relTexPath + texFile;
if(!ofFile::doesFileExist(realPath) || !ofLoadImage(meshHelper.texture,realPath)) {
ofLog(OF_LOG_ERROR,string("error loading image ") + filepath + " " +realPath);
}else{
ofLog(OF_LOG_VERBOSE, "texture width: %f height %f", meshHelper.texture.getWidth(), meshHelper.texture.getHeight());
}

ofLog(OF_LOG_VERBOSE, "texture width: %f height %f", meshHelper.texture.getWidth(), meshHelper.texture.getHeight());

}

aiColor4D dcolor, scolor, acolor, ecolor;
Expand Down
2 changes: 2 additions & 0 deletions apps/addonsExamples/assimpExample/src/testApp.cpp
Expand Up @@ -105,6 +105,8 @@ void testApp::draw(){

ofPopMatrix();

glPopAttrib();


ofDrawBitmapString("fps: "+ofToString(ofGetFrameRate(), 2), 10, 15);
ofDrawBitmapString("keys 1-5 load models, spacebar to trigger animation", 10, 30);
Expand Down
6 changes: 3 additions & 3 deletions apps/devApps/_DeployExamples/src/testApp.cpp
Expand Up @@ -471,7 +471,7 @@ void addAddonsFromInstallXML(string addonPath, string projectFolder, string xcod
int numFolders = xml.getNumTags("folder");
for(int k = 0; k < numFolders; k++){
string folderPath = xml.getAttribute("folder", "name", "null", k);
string folderName = ofFilePath::getFilename(folderPath);
string folderName = ofFilePath::getFileName(folderPath);

cout << "adding folder folderName: " << folderName << endl;

Expand All @@ -487,7 +487,7 @@ void addAddonsFromInstallXML(string addonPath, string projectFolder, string xcod

for(int d = 0; d < numFiles; d++){
filePaths.push_back( xml.getValue("file", "null", d) );
fileNames.push_back( ofFilePath::getFilename( filePaths.back() ) );
fileNames.push_back( ofFilePath::getFileName( filePaths.back() ) );
hashes.push_back( getHash(filePaths.back()) );

cout << " adding " << filePaths.back() << " " << fileNames.back() << " " << hashes.back() << endl;
Expand Down Expand Up @@ -956,4 +956,4 @@ void testApp::gotMessage(ofMessage msg){
//--------------------------------------------------------------
void testApp::dragEvent(ofDragInfo dragInfo){

}
}
93 changes: 87 additions & 6 deletions libs/openFrameworks/graphics/ofImage.cpp
Expand Up @@ -380,28 +380,109 @@ static void saveImage(ofPixels_<PixelType> & pix, string fileName, ofImageQualit
}
}

//----------------------------------------------------------------
void ofSaveImage(ofPixels & pix, string fileName, ofImageQualityType qualityLevel){
saveImage(pix,fileName,qualityLevel);
}

//----------------------------------------------------------------
void ofSaveImage(ofFloatPixels & pix, string fileName, ofImageQualityType qualityLevel) {
saveImage(pix,fileName,qualityLevel);
}

//----------------------------------------------------------------
void ofSaveImage(ofShortPixels & pix, string fileName, ofImageQualityType qualityLevel) {
saveImage(pix,fileName,qualityLevel);
}

void ofSaveImage(ofPixels & pix, ofBuffer & buffer, ofImageQualityType qualityLevel) {
ofLog(OF_LOG_ERROR, "ofSaveImage(pix, buffer) is not yet implemented");
//----------------------------------------------------------------
template<typename PixelType>
static void saveImage(ofPixels_<PixelType> & pix, ofBuffer & buffer, ofImageFormat format, ofImageQualityType qualityLevel) {
//thanks to alvaro casinelli for the implementation

ofInitFreeImage();

if (pix.isAllocated() == false){
ofLog(OF_LOG_ERROR,"error saving image - pixels aren't allocated");
return;
}

#ifdef TARGET_LITTLE_ENDIAN
pix.swapRgb();
#endif

FIBITMAP * bmp = getBmpFromPixels(pix);

#ifdef TARGET_LITTLE_ENDIAN
pix.swapRgb();
#endif

if (bmp) // bitmap successfully created
{
// (b) open a memory stream to compress the image onto mem_buffer:
//
FIMEMORY *hmem = FreeImage_OpenMemory();
// (c) encode and save the image to the memory (on dib FIBITMAP image):
//
if(FREE_IMAGE_FORMAT(format) == FIF_JPEG) {
int quality = JPEG_QUALITYSUPERB;
switch(qualityLevel) {
case OF_IMAGE_QUALITY_WORST: quality = JPEG_QUALITYBAD; break;
case OF_IMAGE_QUALITY_LOW: quality = JPEG_QUALITYAVERAGE; break;
case OF_IMAGE_QUALITY_MEDIUM: quality = JPEG_QUALITYNORMAL; break;
case OF_IMAGE_QUALITY_HIGH: quality = JPEG_QUALITYGOOD; break;
case OF_IMAGE_QUALITY_BEST: quality = JPEG_QUALITYSUPERB; break;
}
FreeImage_SaveToMemory(FIF_JPEG, bmp, hmem, quality);
}else{
FreeImage_SaveToMemory((FREE_IMAGE_FORMAT)format, bmp, hmem);
}
/*
NOTE: at this point, hmem contains the entire data in memory stored in fif format. the
amount of space used by the memory is equal to file_size:
long file_size = FreeImage_TellMemory(hmem);
but can also be retrieved by FreeImage_AcquireMemory that retrieves both the
length of the buffer, and the buffer memory address.
*/
#ifdef _MSC_VER
DWORD size_in_bytes = 0;
#else
uint32_t size_in_bytes = 0;
#endif
// Save compressed data on mem_buffer
// note: FreeImage_AquireMemory allocates space for aux_mem_buffer):
//
unsigned char *mem_buffer = NULL;
if (!FreeImage_AcquireMemory(hmem, &mem_buffer, &size_in_bytes))
cout << "Error aquiring compressed image from memory" << endl;

/*
Now, before closing the memory stream, copy the content of mem_buffer
to an auxiliary buffer
*/

buffer.set((char*)mem_buffer,size_in_bytes);

// Finally, close the FIBITMAP object, or we will get a memory leak:
FreeImage_Unload(bmp);

// Close the memory stream (otherwise we may get a memory leak).
FreeImage_CloseMemory(hmem);
}
}

//----------------------------------------------------------------
void ofSaveImage(ofPixels & pix, ofBuffer & buffer, ofImageFormat format, ofImageQualityType qualityLevel) {
saveImage(pix,buffer,format,qualityLevel);
}

void ofSaveImage(ofFloatPixels & pix, ofBuffer & buffer, ofImageQualityType qualityLevel) {
ofLog(OF_LOG_ERROR, "ofSaveImage(pix, buffer) is not yet implemented");
void ofSaveImage(ofFloatPixels & pix, ofBuffer & buffer, ofImageFormat format, ofImageQualityType qualityLevel) {
saveImage(pix,buffer,format,qualityLevel);
}

void ofSaveImage(ofShortPixels & pix, ofBuffer & buffer, ofImageQualityType qualityLevel) {
ofLog(OF_LOG_ERROR, "ofSaveImage(pix, buffer) is not yet implemented");
void ofSaveImage(ofShortPixels & pix, ofBuffer & buffer, ofImageFormat format, ofImageQualityType qualityLevel) {
saveImage(pix,buffer,format,qualityLevel);
}


Expand Down
45 changes: 42 additions & 3 deletions libs/openFrameworks/graphics/ofImage.h
Expand Up @@ -15,6 +15,45 @@ enum ofImageQualityType {
OF_IMAGE_QUALITY_WORST
};

enum ofImageFormat {
OF_IMAGE_FORMAT_BMP = 0,
OF_IMAGE_FORMAT_ICO = 1,
OF_IMAGE_FORMAT_JPEG = 2,
OF_IMAGE_FORMAT_JNG = 3,
OF_IMAGE_FORMAT_KOALA = 4,
OF_IMAGE_FORMAT_LBM = 5,
OF_IMAGE_FORMAT_IFF = OF_IMAGE_FORMAT_LBM,
OF_IMAGE_FORMAT_MNG = 6,
OF_IMAGE_FORMAT_PBM = 7,
OF_IMAGE_FORMAT_PBMRAW = 8,
OF_IMAGE_FORMAT_PCD = 9,
OF_IMAGE_FORMAT_PCX = 10,
OF_IMAGE_FORMAT_PGM = 11,
OF_IMAGE_FORMAT_PGMRAW = 12,
OF_IMAGE_FORMAT_PNG = 13,
OF_IMAGE_FORMAT_PPM = 14,
OF_IMAGE_FORMAT_PPMRAW = 15,
OF_IMAGE_FORMAT_RAS = 16,
OF_IMAGE_FORMAT_TARGA = 17,
OF_IMAGE_FORMAT_TIFF = 18,
OF_IMAGE_FORMAT_WBMP = 19,
OF_IMAGE_FORMAT_PSD = 20,
OF_IMAGE_FORMAT_CUT = 21,
OF_IMAGE_FORMAT_XBM = 22,
OF_IMAGE_FORMAT_XPM = 23,
OF_IMAGE_FORMAT_DDS = 24,
OF_IMAGE_FORMAT_GIF = 25,
OF_IMAGE_FORMAT_HDR = 26,
OF_IMAGE_FORMAT_FAXG3 = 27,
OF_IMAGE_FORMAT_SGI = 28,
OF_IMAGE_FORMAT_EXR = 29,
OF_IMAGE_FORMAT_J2K = 30,
OF_IMAGE_FORMAT_JP2 = 31,
OF_IMAGE_FORMAT_PFM = 32,
OF_IMAGE_FORMAT_PICT = 33,
OF_IMAGE_FORMAT_RAW = 34
};

//----------------------------------------------------
// FreeImage based stuff:
bool ofLoadImage(ofPixels & pix, string path);
Expand All @@ -30,13 +69,13 @@ bool ofLoadImage(ofTexture & tex, string path);
bool ofLoadImage(ofTexture & tex, const ofBuffer & buffer);

void ofSaveImage(ofPixels & pix, string path, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);
void ofSaveImage(ofPixels & pix, ofBuffer & buffer, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);
void ofSaveImage(ofPixels & pix, ofBuffer & buffer, ofImageFormat format = OF_IMAGE_FORMAT_PNG, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);

void ofSaveImage(ofFloatPixels & pix, string path, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);
void ofSaveImage(ofFloatPixels & pix, ofBuffer & buffer, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);
void ofSaveImage(ofFloatPixels & pix, ofBuffer & buffer, ofImageFormat format = OF_IMAGE_FORMAT_PNG, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);

void ofSaveImage(ofShortPixels & pix, string path, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);
void ofSaveImage(ofShortPixels & pix, ofBuffer & buffer, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);
void ofSaveImage(ofShortPixels & pix, ofBuffer & buffer, ofImageFormat format = OF_IMAGE_FORMAT_PNG, ofImageQualityType qualityLevel = OF_IMAGE_QUALITY_BEST);

// when we exit, we shut down ofImage
void ofCloseFreeImage();
Expand Down

0 comments on commit 6c662b1

Please sign in to comment.