Browse files

initial import of Blossom

  • Loading branch information...
0 parents commit 4b6869fb24ee0accefae89c4e2a8b42528d84e79 @erichocean erichocean committed Jan 20, 2012
Showing 893 changed files with 208,018 additions and 0 deletions.
@@ -0,0 +1,9 @@
@@ -0,0 +1 @@
+Erich Ocean <>
No changes.
@@ -0,0 +1,15 @@
+Blossom - Modern, Cross-Platform Application Framework
+Copyright ©2012 Fohr Motion Picture Studios.
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <>.
Oops, something went wrong.
@@ -0,0 +1,56 @@
+Blossom - Modern, Cross-Platform Application Framework
+Blossom extends the reach of traditional SproutCore applications beyond the
+web browser by re-architecting the view layer to be HTML and CSS-independent.
+Blossom also extends the kinds of apps that can be written in JavaScript by
+implementing an easy-to-use, high-performance animation subsystem that
+leverages hardware acceleration on the GPU whenever possible. The API is
+roughly based on Apple's Core Animation framework, and provides similar
+Since SproutCore's HTML and CSS dependencies were removed, Blossom can
+support native runtimes on the desktop (Windows, Mac OS X, and Linux) and on
+mobile devices (iOS, Android, and Windows Phone), in addition to modern web
+Blossom's native runtimes are _not_ "WebView" wrappers like PhoneGap or
+Cappuccino's poorly named "NativeHost". Instead, these are native JavaScript
+runtimes with C, C++, or Objective-C implementations of the various Blossom
+and SproutCore classes, such as SC.Request (for networking), SC.Layer
+(for animation), as well as the various JavaScript runtime objects such as
+CanvasRenderingContext2D, Float32Array and ArrayBuffer that are exposed to
+Blossom developers. This is similar to Node.js, another JavaScript
+environment based around Google v8 that does not support HTML or CSS.
+One of Blossom's key innovations is its drawing model, which is modeled after
+Mac OS X's "Quartz 2D" API. This PDF-compatible drawing model is used for all
+of Blossom's native views. Most importantly, drawing is GPU-accelerated even
+on mobile devices, and views draw identically on every host, including
+modern web browsers. This feature alone eliminates one of SproutCore's
+long-standing problem areas: quickly creating custom views that render fast.
+Blossom is a *modern* application framework especially well-suited to apps
+running full screen on tablets and mobile devices, with rich animation and
+effects. In addition, modern operating systems including Mac OS X 10.7 and
+Windows 8 have moved strongly towards full-screen, single-window, immersive
+applications with heavy use of animation. This app model is also compatible
+with Blossom's capabilities when running in a modern web browser, making a
+Blossom app feel at home in all of these environments.
+Blossom's developer tools run on Node.js, and Blossom is licensed under the
+GPLv3 for non-commercial use; commercial licenses will be available by Fohr
+soon under terms similar to what Sencha offers for Ext.js.
+Getting Involved
+* Why Blossom exists:
+* IRC Channel: #blossom on Freenode
+Watch this repository on GitHub to follow development, or fork it and submit
+a pull request to help contribute to it's evolution.
+Blossom was conceived and written by Erich Ocean at Fohr <>,
+and is based on the SproutCore version 1.4.5 release.
@@ -0,0 +1,38 @@
+SproutCore has been built thanks to the tireless efforts of many talented
+developers. Special thanks to the following developers who contributed lots of
+code and ideas:
+* Alex Iskander
+* Billy Kakes
+* Brian Cully
+* Charles Jolley
+* Chris Hyle
+* Colin Campbell
+* Cortland Klein
+* Devin Torres
+* Erich Ocean
+* Evin Grano
+* Geoffrey Donaldson
+* James Austin
+* Jason Ketterman
+* Jonathan Lewis
+* Joshua Dickens
+* Juan Pinzon
+* Majd Taby
+* Matthias Loitsch
+* Martin Ottenwaelter
+* Maurits Lamers
+* Mike Ball
+* Mike Subelsky
+* Mohammed Ashik
+* Onar Vikingstad
+* Peter Bergstrom
+* Peter Wagenet
+* Ray Bodenhorn
+* Santosh Shanboque
+* Sudarshan Bhat
+* Tanner Donovan
+* Teresa Tsui
+* Thomas Langemann
+* Tom Dale
+* Trek Glowacki
@@ -0,0 +1,260 @@
+SproutCore 1.4.5 (January 25, 2010)
+* Removed old HISTORY file
+* Remove content observer when destroyed
+* DRY up ContentDisplay, add tests
+* Convert array like objects to arrays for SC.Query CONTAINS - Fixes #138
+* Fixed regression in SC.Animatable
+* Allow SC.SelectView's that whose items are numbers and start at 0
+* Missed a copyright
+* Updated Copyrights
+* Fix for SC.RootResponder's targetForAction. Now checks default responder for a isResponderContext property.
+* Moved a .sc-video-view CSS rule in the correct file.
+* MouseWheel fix for WebKit
+* Changed CollectionFastPath#contentIndexIsGroup signature to match protocol for delegate
+* Pass the event when calling modalPaneDidClick.
+* [#128] BUGFIX: Disconnect bindings when object is destroyed
+* Fixed issue with destroying unused items in CollectionView
+* Don't try to modify select field element if it doesn't exist yet
+* Enhance unloadRecords allowing unloading all records of a specific type
+* fixed timing issues where css3 transitions are applied incorrectly
+* Return the picker pane after popup
+* Added test for SC.Record.normalize() not preserving hash value of toOne without a defaultValue.
+* SC.Record.normalize() would not preserve has value of toOne relationship that did not declare a defaultValue. All tests pass.
+* Added tests for SC.CascadeDataSource.
+* Fixed bug with retrieveRecords in SC.CascadeDataSource not passing all arguments.
+* SC.Observable.addProbe() fix for iPad/iPhone -- console.log currently only accepts one argument.
+* CollectionView calls destroy to removed item views that will not be reused
+* Check for image before trying to abort - Fixes #106
+* Updated references to mouseOut and mouseOver to mouseExited and mouseEntered - Fixes #100
+* Fixed bug with toggling isEnabled on SelectFieldView
+SproutCore 1.4.4 (November 12, 2010)
+* Fix SC.platform.touch for Chrome 9
+* Better docs for setIfChanged
+* Minor documentation fix
+* Minor cleanup to SC.platform
+* Added support for Chrome Frame with :chrome_frame flag in Buildfile
+* Can now parse '1/1/01 1:1:1'-formatted date times. Thanks timgaleckas.
+* Remove unused code in SC.Store#removeDataHash
+* Removed deep flag for clone method
+* Replaced some instances of true with YES
+* Datastore makes deep copies of data hashes instead of shallow copies
+* Added support for making deep copies of an object into SC.copy and into SC.Copyable.copy
+* SC.clone makes deep copies of objects of type SC.T_HASH
+* Removed unnecessary variable declaration and method invokation in writeAttribute
+* Fixed an incorrect statement in the SC.CollectionContent inline documentation.
+* Fixed typo in SC.Animatable fixes
+* Added safety check for SC.Touch.allowDefault
+* Animatable should check that transitions exist before using special case
+* Typos prevent accelerating anything with a right or bottom even if it also has a top/height or left/width
+SproutCore 1.4.3 (October 19, 2010)
+* Send a warning to the console when using SC.RecordArray#indexOf or SC.RecordArray#lastIndexOf and providing an object that is
+* Applied fix to the findClassNames function so that class names can be detected when using SproutCore in IE 7 and 8.
+* SC.ObserverSet.add was being overloaded in debug mode by a version that mucked up passing along a context with addObserver. T
+* rendering of select field will now honor isEnabled, ensuring that the control is disabled in the markup if not enabled in cod
+* adding an observer that monitors the objects content (and not just the reference) so that any changes to the content will upd
+* NotEmpty validator would not validate 0 as a non-empty number
+* Spelling fixes in api doc
+* Fix spelling in license header
+* LabelView: allow inline editing of numbers like 0
+* Refactor duplicated code into a function
+* Made errors with not correctly initialized caches obvious to find.
+* Add same guard clause as in insertTab
+* Fix tabbing in the previous direction as well
+* Make tabbing between inline text fields work
+* Make SC.Animatable not crash when it lacks a parent view.
+* Changed SC.Button mixin to support content objects that do not have get
+* Fixed issue with SC.ScrollerView not properly updating its element's class names, e.g., if controlsHidden changed to false, t
+* SC.ScrollerView's thumbs now default to their position -- solves an issue where going back to a view that had already been sc
+* Explicitly check falsity of isReady in SC._object_className so searching for class names in tests work
+* SC.ListItemView checks rightIcon property when determining if click occurred within it
+* For radio buttons with horizontal layoutDirection, added itemWidthKey for custom widths -- fixes Github Issue #27
+* These tests fail because the store status for the child record is only updated when you 'get' the status of the child record.
+* return null instead of undefined from select field view getFieldValue when empty item selected.
+* Sanity check in CollectionView item removal
+* Fixed SC root responder's mousemove function so that last hovered views are exited first before other views are entered
+* Fixes passing contexts with addObserver.
+* Make sure a bad DateTime.parse() doesn't mess up future parses
+SproutCore 1.4.2 (October 1, 2010)
+* Fixes a DateTime .get('lastMonday') bug
+* default to using ISO 8601 format for time parsing if none is specified
+* Allow SelectFieldView to obtain focus if the user presses TAB key from previous field.
+* Fixed typo
+SproutCore 1.4.1 (September 21, 2010)
+* Update the X-SproutCore-Version header to 1.4 [MO]
+DISCLAIMER: This is a very rough and not comprehensive overview of the 1000+ commits that formed SproutCore 1.4.
+* Touch Support Gen 1
+* Bug Fixes and Stabilization
+* Build tools performance improvements
+* Greenhouse (experimental)
+* SC.TableView (experimental)
+* Implementation of SC.ErrorCatcher.
+* Orientation change recognition
+* Add all sorts of alt-key goodness to scrollers:
+ * alt-click in track scrolls to click
+ * alt-click on buttons scrolls by page
+ * alt-drag scrolls 1/2 speed.
+* CollectionView fast path (experimental)
+* SC.Animatable
+* Accelerated Layer
+* Adding new SC.device object for states such as orientation, online and offline (and moving orientation out from root responder)
+* Add application manifest check to html tag of default index.rhtml
+* Media framework (experimental)
+* Default iPhone loading screen for webapps
+* Nested Records (experimental? or functional?)
+* SC.DateTime
+* SC.StaticContentView
+* SC.Border
+* Add a task queue to SproutCore, capable of running tasks in the "background"; that is, while idle. (experimental)
+* Better IME support
+* MainPane now has a 200x200 min app size. This is where you should set the minimum size of your app.
+* Move feature detection from SC.browser to SC.platform.
+* Desktop framework no longer requires all other frameworks to load
+* Improved context menu handling
+* Add trigger() method to SC.routes to trigger the current route.
+* Improvements to MenuViews
+* Add the ability to observe changes on SC.Set at an add/remove level, allowing for efficient filtering, merging, etc.
+* Allow configuration of the touch icons and status bar, as well as favicon via Buildfile.
+* Add deprecation warning to SC.Scrollable
+* Better mouseWheel support
+* Added some ARIA tags for accessibility.
+* SC.ScrollView / SC.ScrollerView improvements
+* Experimental mousewheel momentum support. Set SC.WHEEL_MOMENTUM to YES.
+* Support descending sort in ArrayControllers.
+* SC.StaticLayout functionality is now built into SC.View
+* Allow panes the chance to handle user events.
+* Fixes/improvements to PopupButton
+* Make inline text editor inherit escapeHTML from the list item view
+* Added domCSSPrefix to SC.platform
+* Make views update their layer's layerId if their layerId changes.
+* Adding maxlength property to textfield view
+* Added inflector functions to SC.String: singularize() and pluralize()
+* Adding mousewheel support to textareas.
+* Adding HTML5 spellCheck support for textfields. It works with the latest versions of Firefox, Sproutcore, Chrome
+* Adding lastObject() method to SC.Enumerable
+* Allow SC.outlet to specify a different root.
+* Improvements to drag/drop
+* Improvements to SC.UserDefaults
+* Switch from XHTML -> HTML5.
+* Update SelectButtonView to use target/action instead of deprecated function calls.
+* Invoke button actions after a delay if triggered by keyboard shortcuts.
+* Make PopupButtonView and SelectButtonView click and hold delay a constant. Also lowered default value.
+* Use SC.Enumerable's sortProperty to sort objects so that this works on any SC.Enumerable not just native arrays.
+* SC.Record: Add in a the new concept of 'readOnlyAttributes' to complement 'attributes'.
+* New type of SC.PickerPane: PICKER_MENU_POINTER - It's a menu but position like picker pointer
+* Add a willRemoveAllChildren to SC.CollectionView.
+* Added max() and min() to SC.Array
+* Added isDescendantOf method to SC.View
+* Added acceptFirstResponder code to radio and checkbox button.
+* Add a constant for the default separator height, too.
+* use SC.WELL_CONTAINER_PADDING for well and change default value to 15
+* Initial support for re-using views in collections
+* Push an extra div into the scrollView so that it's possible to style the corner differently.
+* Moved all of the standard theme scroller metrics into SproutCore as default values.
+* Adding themes to segmented view
+* Changing tabView so you can set the height of the tabs with a global variable
+* Added provision for Enabling/Disabling menu items in SelectButtonView
+* AlertPane: Esc triggers cancel button / enter triggers default button
+* SC.Query: 'orderBy' can now optionally be a comparison function. In this case, the specified function will be passed the two records directly, rather than the typical method of operating on specific properties. This can be useful for complicated comparisons that cannot be expressed by the simpler method.
+* Add option to only allow focus tabbing among webapp controls.(No jumping to address bar
+* pushRetrieve, pushDestroy and pushError now return storeKey on success instead of YES
+* If there is a list item being edited, commit the changes if the list is scrolled.
+* New Validator for positive integers and also accepts a default value
+* Make sure we always have a root responder.
+* Taught toFormattedString to handle characters %h (unpadded 24-hour time, 1-24) and %i (unpadded 12-hour time, 1-12).
+* FocusRings for SC.ButtonView
+* Adding a handy escapeForRegExp method to String
+* Alignment support for SC.SegmentedView
+* allowing text fields to only apply changes on blur via applyImmediately: NO
+* Added a property to enable/disable textfield tabbing.
+* Removed mobile framework as it was unnecessary
+* Update all encodings to be valid UTF-8
+* We now force parentViewDidResize. It is no longer optional.
+* Only add 'px' units to layout values that are numbers. Strings will be unchanged.
+* 'layerLocationNeedsUpdate' is not set until updates are completed.
+* If a pane receives a tab key press, try to find the next eligible view in the view hierarchy and assign it first responder.
+* In collection view, check if the item is loaded or not before advancing to it.
+* SelectButtonView should by default highlight whatever item is set to its value property.
+* SC.Request: Added 'proper' async() function
+* Changed disclosure from using a label tag to using span
+* add debug() support to SC.Logger
+* Added the shouldInheritCursor property & documentation to SC.View. Defaults to YES.
+* ResponderContext is now a mixin included by SC.Pane and SC.Application.
+* TextFieldView: add support for escapeHTML
+* Renamed isEnabledObserver to reduce the likelihood of naming collisions.
+* Move into runtime, and only implement if the browser does not.
+* do not append font-weight style with px
+* Disable other mouse events while dealing with inputs.
+* XSS security improvements
+* Fixed a bug with listItem views not always being removed properly
+* Miscellaneous code cleanup, optimizations and fixes
+* Fix for memory leak in SC.Response
+* Fixed issue with SC.ManyArray not notifying inverse attributes of correct records that got removed in SC.ManyArray#replace, with tests.
+* TextField hint was not updating for browsers that support placeholder
+* Fix SC.Object so it handles both local and non-local property paths at the same time.
+* Fixed SC.Binding.disconnect()
+* Initialize the value of the select field view to the value of the first element if there is no emptyName and the value hasn't been previously set.
+* Fixed RenderContext to properly handle styles starting with a dash
+* Change the value of the textfield on keyDown to reflect key repetitions.
+* Ignore moveRight and moveLeft events if the user has a control or meta key held down. Otherwise, we may inadvertently block browser keyboard shortcuts.
+* Destroy the layer before removing from parent , otherwise the view will leak
+* Fixes to SC.SegmentedView.
+* Fixed checkbox/righticon/disclosure states in SC.ListItemView
+* RootResponder's performKeyEquivalent should check the menupane before the keypane.
+* Fixed broken useToggleSelection property.
+* Correctly trigger the document's 'ready' event
+* SC.LabelView was lacking a default implementation of inlineEditorShouldBeginEditing(), so by default it would never switch to editable mode when 'isEditable' == true.
+* Fix for bug in SC.Record.normalize(). It would try to normalize a null child record reference.
+* SC.Event.special.mouseover didn't exist, changing it to mouseenter fixes the mouseenter event
+* RecordAttribute: Allow null dates
+* Checking / Unchecking checkboxes or clicking in empty space was not removing focus from in-focus form fields
+* Fixing before ondeactivate in textfield as it is not letting textfields within iframes get focus
+* Invalidate the verticalScrollOffset and horizontalScrollOffset with -1 instead of 0, because those are actually valid values.
+* Reset the click count if clicks occur too far away from one another
+* Make SC.RecordAttribute respect isEditable
+* SC.SelectButton should accept first responder only if it is enabled.
+* Prevent scrollbars from being shown when PickerPane is opened.
+* XHR requests now work with Opera
+* IE7 fixes
+* Fixed problem with poor security management in FF4
+* Fix for window focus events on IE.
+* Fixed issue with underscore characters not appearing in IE text fields.
+* Adding extra validation to avoid incorrect appearance of hint when deleting all text while using firefox
+* Fix the default # added in FF and IE when using routes
+* SC.Pane should not call sendAction from its sendEvent implementation.
+* Fixing IE8 selection woes and removing a lot of legacy cross-browser code
+* Resolve a bug where other panes would disappear if a menu pane was opened (IE7 only).
+* Fix for SC.button on IE7, now it calculates the label with once is appended to the document
+* SC.TextFieldView: Default hint as empty string to avoid IE displaying null in the text fields
Oops, something went wrong.

0 comments on commit 4b6869f

Please sign in to comment.