0.07 release

edit: the official changelog is now at https://github.com/openframeworks/openFrameworks/blob/develop/changes.txt

this is the biggest release yet.

it’s so big, it’s hard to remember everything that’s changed!

here’s an initial pass at a changelog since 0062, in no particular order.

[list]

  • 0062 core: 624KB, 49 files. 007 core: 1.12MB, 148 files. in other words, the core of OF has basically doubled.

  • the core addons ofxVectorMath, ofxThread, and ofxDirList have been turned into ofVectorMath, ofThread and ofDirectory

  • multiple versions of ofxShader, ofxVbo and ofxFbo have been brought into the core as ofShader, ofVbo, and ofFbo

  • ofPixels is now a fully-formed class that is used by a variety of classes

  • besides ofDirectory, ofFile and ofBuffer have also been added for working with the filesystem

  • android support

  • swappable rendering: you can render to opengl or cairo. cairo supports pdf output.

  • better gstreamer support on linux

  • new fps counting technique that works a little better across platforms

  • ofPixels and ofImage have getColor() which returns an ofColor, and setColor(x,y,ofColor)

  • slowly transitioning away from fmod toward openal for sound support

  • cross-platform file dialog and alert dialog, ofSystemAlertDialog(), ofSystemLoadDialog(), ofSystemSaveDialog()

  • ofSetOrientation() allows you to rotate the entire OF drawing space

  • working towards a sound synthesis addon, ofxSynth

  • ofColor has constants for basic colors, like ofColor::magenta

  • ofxAssimpModelLoader for loading a huge variety of 3d formats

  • ofEnableBlendMode() supports additive, subtractive, alpha, etc. blending

  • ofxThreadedImageLoader addon

  • ofMesh, ofVbo and ofVboMesh provide a clean interface for drawing, and for gpu-accelerated drawing

  • better iPhone video and camera support

  • ofNode is a new 3d node class with position and orientation that can be manipulated with methods like truck() and tilt()

  • ofCamera extends ofNode, is a new camera class for representing a camera position, orientation, and other parameters

  • ofEasyCam wraps ofCamera with automatic mouse binding that resembles processing’s PeasyCam

  • ofLight also extends ofNode, provides a simple interface for placing and describing opengl lighting

  • ofDrawBitmapString() has been massively refactored to support all the different 3d drawing cases you can imagine via ofSetDrawBitmapMode()

  • ofLog() now supports streaming, for example: ofLogVerbose() << “some message”;

  • ofPath and ofPolyline wraps all the 2d drawing functionality previously supported by OF, and adds more. ofPolyline has some new advanced methods like getResampledBySpacing(), getClosestPoint(), simplify()

  • ofColor finally adds HSB support. ofColor is always an RGB color, but you can get and set its hue, saturation and lightness via getHue()/setHue() etc. it also distinguishes lightness (value) from brightness. to create a color using HSB values, use ofColor::fromHsb(h,s,b,a). to set from hex, use ofColor::fromHex(hex)

  • ofBox and ofSphere draw the respective 3d shapes

  • a ton of conversion methods have been added: ofToHex, ofToBinary, ofToString, ofHexToInt, ofHexToFloat, etc. they’re all inside ofUtils.h

  • github-based, community-driven development is pretty much going full stream ahead

[/list]

what else am i missing? add more notes below :slight_smile:

ofSetColor(int gray); // new set a color as grayscale with one argument
ofSetHexColor( int hexColor ); // hex, like web 0xFF0033;

ofCircle(), ofRect(), etc all use vertex arrays now rather than glBegin()/end()

@kyle thanks for starting this! :slight_smile:

ofCircle(), ofRect(), etc all use vertex arrays now rather than glBegin()/end()

actually this was like that since 0061 at least, don’t remember exactly but it was added for the first iphone release.

also:

  • ofVideoGrabber, ofVideoPlayer, ofSoundPlayer and ofSoundStream use “swappable apis”
  • Linux has no dependencies with any not free library (FMOD mainly)
  • Cairo renderer also supports svg rendering, multipage (1 page per frame) and a initial 3D rendering system where 3D primitives are projected using the same projection matrix used for openGL before rendering them
  • ofSoundStream has been converted to an object oriented api, and now is possible to open several devices and choose which device you want to use.
  • ofTrueTypeFont, now generates a texture atlas when loading a font instead of a texture per char. It also has bind()/unbind() functions that allow to bind the texture only once to render several texts, making font rendering much faster.
  • ofTrueTypeFont getShapes uses ofPath
  • new ofTessellator class used internally in OF by ofPath and ofBegin/EndShape bassed on the tess2 library (with some modifications so it also works on openGL ES) which is faster and has a cleaner api than the previous one from GLU
  • openCV 2.2
  • ofColor, ofPixels and ofImage are now templated classes with support for 8bit, 16bit and 32bit and easy conversion between them using the = operator
  • ofApp*Window have been refactored so now all the common functionality is in ofEvents which makes easier to create new windows and mantain the current ones
  • easier registering of core events with the new ofRegister*Events functions
  • new logging system with support for << operator, logging per module, logging to file and logging channels which makes it easier to redirect the logging output
  • functions and classes to load online resources to memory or disk using http both synchronous and asynchronously
  • ofImage directly supports loading images from the web
  • ofxCvHaarFinder
  • ofSystemAlertDialog for alert dialogs
  • drag and drop support in applications (except in linux)
  • ofPtr for shared pointers, is actually std::tr1::shared_ptr and will be std::shared_ptr when c++11 is supported
  • all the classes with opengl resources have shallow copy + shared pointer semantics so textureA = textureB makes textureB point to the same texture in the graphics card as textureA, and the texture is released when the last copy is destroyed
  • all swappable api objects (ofVideoGrabber, ofvideoPlayer, ofSoundPlayer and ofSoundStream) have shallow copy + shared pointer semantics too
  • all memory structures (ofPixels, ofImage, ofBuffer, ofMesh…) have deep copy semantics, so pixelsA = pixelsB makes b a full new copy of pixelsA

is there anywhere an up-to-date API doc for 0.07 ?

not yet, the nearest is this:

http://www.undef.ch/uploads/ofDoc/html/annotated.html

generated with doxygen by underdoeg but since there’s almost no doxygen comments in the code by now it’s only a list of the available classes, methods…

thank you

now that ofxVectorMath is part of the core, ofPoint being an “ofVec3f” under the hood means there is tons more you can do with ofPoints and less conversions are necessary. Also, alot of the graphics functionality now takes points as another form of input:

void ofCircle(const ofPoint & p, float radius);

thanks for all the additions, arturo! my list was mostly from what happened after ofdev-con, and now i remember there were a ton more changes that occurred after that.

does the shared pointer for gl resources really work? i tried making a vector of ofFbos yesterday and had a weird crash. i’d like to be able to write vector and vector though. if you’re convinced it should work, i’ll start a new thread.

changelog from github: https://github.com/openframeworks/openFrameworks/compare/0062…007

kyle, yeah it should work, actually everything openGL uses reference counting instead of shared pointers but the behaviour should be the same except is not thread safe but being openGL it shouldn’t be a problem. so yes post in another thread, there could be a bug in the fbo

Is there a way to volunteer to help update/clean up the main oF.cc page? There are posts on the front page from 2009, we’re coming up on 2012 and while the openframeworks project is all exciting and vibrant on the inside, to a newcomer it might look a bit like we’ve all gone off somewhere else.

ickydog: yes, see http://forum.openframeworks.cc/t/openframeworks.cc-news-feed/7235/0

=D
Thank you all for all the effort you’ve put into this! I don’t even know where to begin with 0.07

I do have a question. I’ve noticed the oF site mentions this is a Release (not a Pre like a few weeks ago) and I tried out some stuff that used to work from a github 0.07 release of some time ago and it didn’t work. I’d like to know if this is the “Final” release of 0.07?

What did and didn’t work for me in the new release was the ofxKinect and ofxTriangle, and the reason for me asking this is because I’ve got a lot to learn about oF so I need some stability in the code… so I didn’t mean to be rude.

I am eternally gratefull. =D

@irregular, the naming ‘release’ vs ‘prerelease’ is kind of haphazard. ‘prerelease’ means something like ‘pre-version-1.0’ but i think that’s kind of implied so i often just say ‘release’.

the version of 007 available via the OF website is the ‘final’ 007. it’s the version people should make their addons compatible with. it might take some time for people to update their addons though.

@kylemcdonald
Just what I needed to know. Thanks again! :slight_smile:

I’m going to add a changelog to github, as it seems like something that should be versioned and part of the dev process. until now, it’s lived here:

http://www.openframeworks.cc/openframeworks-changelog

but I think it’s worthwhile to have as part of the repository.

in doing so, I noticed we didn’t do changes for 0.062 either, so I’ve just gone through them. it’s a very small compared to 007, but useful to see I think.

OF 0.062 Pre-release, changelog:

key:

  • = added
  • = subtracted
    / = modified

This is mostly minor changes, as it’s a maintenance release with small bug fixes a few extra features
and critical updates for Visual Studio 2010, Linux and iPhone developers.

/ altered framerate calculation
/ altered data path, adding ofSetDataPathRoot for OSX
/ ofSerial - bug fixes, including EAGAIN

  • added touchEvents
    / ofDrawBitMapString - added openglES compatible mode
  • ofGraphics - added universal functions to help control textures, such as “ofEnableNormalizedTexCoords()”
  • ofImage - setCompression code via SoSoLimited
  • ofTexture - added compression options, via SoSoLimited
    / ofSoundStream - bug fixes for audio clearning
    / ofConstants - switch some includes, for example, from <stdio.h> to
  • ofMath - added some functions to help with angle math, such as ofLerpDegrees, and ofAngleDifferenceDegrees
  • ofMath - added some polygon / polyline / line methods, such as ofInsidePoly and ofLineSegmentIntersectio
  • ofMath - added curve functions, ofBezierPoint, ofBezierTangent, ofCurvePoint, ofCurveTangent
  • ofTypes - added functionality to ofRectangle, added [] options for ofColor
  • ofTypes - removed getPixels() from ofBaseVideo, as is was unnecessary
  • ofUtils - new ofSetDataPathRoot code for OSX, changes to ofToDataPath

the changes are now at the root level of the core repository https://github.com/openframeworks/openFrameworks/blob/develop/changes.txt

i’m making a few more updates to sort the updates and point out highlights.

I just wanted to say that 007 is great, and community’s fine.
Hope to have soon the level to help more.

Well, naive post…

Sebastien

The update of Poco library from 1.3.3 to 1.4 seems to be missing in the 007 change log.