Skip to content

Commit

Permalink
adding a tool to extract bitmap data from fxg graphic
Browse files Browse the repository at this point in the history
  • Loading branch information
EliEladElrom committed Jul 21, 2011
1 parent 9057e6a commit 05ee171
Show file tree
Hide file tree
Showing 10 changed files with 230 additions and 33 deletions.
4 changes: 2 additions & 2 deletions .settings/org.eclipse.core.resources.prefs
@@ -1,3 +1,3 @@
#Fri Jul 30 19:58:46 EDT 2010
#Thu Jul 21 16:33:23 EDT 2011
eclipse.preferences.version=1
encoding/<project>=UTF-8
encoding/<project>=utf-8
108 changes: 108 additions & 0 deletions bin-debug/Main.html
@@ -0,0 +1,108 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<!--
Smart developers always View Source.
This application was built using Adobe Flex, an open source framework
for building rich Internet applications that get delivered via the
Flash Player or to desktops via Adobe AIR.
Learn more about Flex at http://flex.org
// -->
<head>
<title></title>
<meta name="google" value="notranslate" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- Include CSS to eliminate any default margins/padding and set the height of the html element and
the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as
the percentage of the height of its parent container, which has to be set explicitly. Fix for
Firefox 3.6 focus border issues. Initially, don't display flashContent div so it won't show
if JavaScript disabled.
-->
<style type="text/css" media="screen">
html, body { height:100%; }
body { margin:0; padding:0; overflow:auto; text-align:center;
background-color: #ffffff; }
object:focus { outline:none; }
#flashContent { display:none; }
</style>

<!-- Enable Browser History by replacing useBrowserHistory tokens with two hyphens -->
<!-- BEGIN Browser History required section -->
<link rel="stylesheet" type="text/css" href="history/history.css" />
<script type="text/javascript" src="history/history.js"></script>
<!-- END Browser History required section -->

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
// For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection.
var swfVersionStr = "10.2.0";
// To use express install, set to playerProductInstall.swf, otherwise the empty string.
var xiSwfUrlStr = "playerProductInstall.swf";
var flashvars = {};
var params = {};
params.quality = "high";
params.bgcolor = "#ffffff";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
var attributes = {};
attributes.id = "Main";
attributes.name = "Main";
attributes.align = "middle";
swfobject.embedSWF(
"Main.swf", "flashContent",
"100%", "100%",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
// JavaScript enabled so display the flashContent div in case it is not replaced with a swf object.
swfobject.createCSS("#flashContent", "display:block;text-align:left;");
</script>
</head>
<body>
<!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough
JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show
when JavaScript is disabled.
-->
<div id="flashContent">
<p>
To view this page ensure that Adobe Flash Player version
10.2.0 or greater is installed.
</p>
<script type="text/javascript">
var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");
document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"
+ pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" );
</script>
</div>

<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="Main">
<param name="movie" value="Main.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="Main.swf" width="100%" height="100%">
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<!--<![endif]-->
<!--[if gte IE 6]>-->
<p>
Either scripts and active content are not permitted to run or Adobe Flash Player version
10.2.0 or greater is not installed.
</p>
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</noscript>
</body>
</html>
Binary file added bin-debug/Main.swf
Binary file not shown.
Binary file added bin-debug/framework_4.5.1.21328.swf
Binary file not shown.
Binary file added bin-debug/spark_4.5.1.21328.swf
Binary file not shown.
Binary file added bin-debug/textLayout_2.0.0.232.swf
Binary file not shown.
41 changes: 11 additions & 30 deletions html-template/history/history.js
Expand Up @@ -26,13 +26,6 @@ BrowserHistory = (function() {
version: -1
};

// if setDefaultURL has been called, our first clue
// that the SWF is ready and listening
//var swfReady = false;

// the URL we'll send to the SWF once it is ready
//var pendingURL = '';

// Default app state URL to use when no fragment ID present
var defaultHash = '';

Expand All @@ -50,6 +43,9 @@ BrowserHistory = (function() {

// History maintenance (used only by Safari)
var currentHistoryLength = -1;

// Flag to denote the existence of onhashchange
var browserHasHashChange = false;

var historyHash = [];

Expand Down Expand Up @@ -105,11 +101,6 @@ BrowserHistory = (function() {
return document.getElementById('ie_historyFrame');
}

function getAnchorElement()
{
return document.getElementById('firefox_anchorDiv');
}

function getFormElement()
{
return document.getElementById('safari_formDiv');
Expand Down Expand Up @@ -252,7 +243,7 @@ BrowserHistory = (function() {
backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl);
}

if (browser.safari) {
if (browser.safari && !browserHasHashChange) {
// for Safari, submit a form whose action points to the desired URL
if (browser.version <= 419.3) {
var file = window.location.pathname.toString();
Expand Down Expand Up @@ -339,7 +330,7 @@ BrowserHistory = (function() {
}
}

if (browser.safari) {
if (browser.safari && !browserHasHashChange) {
// For Safari, we have to check to see if history.length changed.
if (currentHistoryLength >= 0 && history.length != currentHistoryLength) {
//alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|"));
Expand All @@ -366,7 +357,7 @@ BrowserHistory = (function() {
_storeStates();
}
}
if (browser.firefox) {
if (browser.firefox && !browserHasHashChange) {
if (currentHref != document.location.href) {
var bsl = backStack.length;

Expand Down Expand Up @@ -436,10 +427,12 @@ BrowserHistory = (function() {
}
}
}
//setTimeout(checkForUrlChange, 50);
}

var _initialize = function () {

browserHasHashChange = ("onhashchange" in document.body);

if (browser.ie)
{
var scripts = document.getElementsByTagName('script');
Expand All @@ -465,7 +458,7 @@ BrowserHistory = (function() {
}
}

if (browser.safari)
if (browser.safari && !browserHasHashChange)
{
var rememberDiv = document.createElement("div");
rememberDiv.id = 'safari_rememberDiv';
Expand Down Expand Up @@ -493,19 +486,10 @@ BrowserHistory = (function() {
if (document.getElementById("safari_remember_field").value != "" ) {
historyHash = document.getElementById("safari_remember_field").value.split(",");
}

}

if (browser.firefox || browser.ie8)
{
var anchorDiv = document.createElement("div");
anchorDiv.id = 'firefox_anchorDiv';
document.body.appendChild(anchorDiv);
}

if (browser.ie8)
if (browserHasHashChange)
document.body.onhashchange = hashChangeHandler;
//setTimeout(checkForUrlChange, 50);
}

return {
Expand Down Expand Up @@ -575,7 +559,6 @@ BrowserHistory = (function() {
} else {
//alert(historyHash[historyHash.length-1]);
}
//setHash(def);
setInterval(checkForUrlChange, 50);
}

Expand All @@ -589,7 +572,6 @@ BrowserHistory = (function() {
window.location.replace(newloc);
}
setInterval(checkForUrlChange, 50);
//setHash(def);
}

},
Expand Down Expand Up @@ -622,7 +604,6 @@ BrowserHistory = (function() {
if (browser.ie && currentObjectId != null) {
objectId = currentObjectId;
}
pendingURL = '';

if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) {
var pl = getPlayers();
Expand Down
2 changes: 1 addition & 1 deletion html-template/index.template.html
Expand Up @@ -12,7 +12,7 @@
// -->
<head>
<title>${title}</title>
<meta name="google" value="notranslate">
<meta name="google" value="notranslate" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- Include CSS to eliminate any default margins/padding and set the height of the html element and
the body element to 100%, because Firefox, or any Gecko based browser, interprets percentage as
Expand Down
8 changes: 8 additions & 0 deletions src/Main.mxml
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:Application>
100 changes: 100 additions & 0 deletions src/com/elad/optimize/utils/FXGHelper.as
@@ -0,0 +1,100 @@
/*
Copyright (c) 2009 Elad Elrom. Elrom LLC. All rights reserved.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
@author Elad Elrom
*/
package com.elad.optimize.utils
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Matrix;

import mx.controls.Image;
import mx.core.UIComponent;

import spark.components.Group;

public final class FXGHelper
{
// retrieve the bitmap data of a component
public static function getBitmapData( target:UIComponent, isTransparent:Boolean = false ):BitmapData
{
var bitmapData:BitmapData = new BitmapData( target.width, target.height, true, 0x00FFFFFF );
var matrix:Matrix = new Matrix();
bitmapData.draw( target, matrix );
return bitmapData;
}

public static function getImage(target:UIComponent ):Image
{
var bitmapData:BitmapData = new BitmapData( target.width, target.height, true, 0x00FFFFFF );
var matrix:Matrix = new Matrix();
bitmapData.draw( target, matrix );

var bitmap:Bitmap = new Bitmap( bitmapData );
var image:Image = new Image();
image.source = bitmap;
return image;
}

public static function getBitmap(target:UIComponent ):Bitmap
{
var bitmapData:BitmapData = new BitmapData( target.width, target.height, true, 0x00FFFFFF );
var matrix:Matrix = new Matrix();
bitmapData.draw( target, matrix );

var bitmap:Bitmap = new Bitmap( bitmapData );
return bitmap;
}


/**
* Utility method to find the object based on id
*
* @param object
* @param id
* @return
*
*/

public static function findSparkObjectById(object:Group, id:String):*
{
var numElements:int = object.numElements;
var child:*;


for (var index:int; index<numElements; index++)
{
child = object.getElementAt( index );

if ( child.id == id )
return child;
}

return child;
}


}
}

0 comments on commit 05ee171

Please sign in to comment.