[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/asobj/Stage.cpp server/a...
From: |
Benjamin Wolsey |
Subject: |
[Gnash-commit] gnash ChangeLog server/asobj/Stage.cpp server/a... |
Date: |
Thu, 13 Mar 2008 12:23:07 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Benjamin Wolsey <bwy> 08/03/13 12:23:07
Modified files:
. : ChangeLog
server/asobj : Stage.cpp Stage.h
Log message:
* server/asobj/Stage.{h,cpp}: add _displayState member,
implement
displayState getter-setter. Make checks case-insensitive, but
not yet tolerant of whitespace or extra characters.
* gui/Player.cpp: listen for displayState.
Example:
http://julian.empiregn.com/files/fullscreen/fullscreen_flash.swf
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5896&r2=1.5897
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Stage.cpp?cvsroot=gnash&r1=1.34&r2=1.35
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Stage.h?cvsroot=gnash&r1=1.13&r2=1.14
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5896
retrieving revision 1.5897
diff -u -b -r1.5896 -r1.5897
--- ChangeLog 13 Mar 2008 12:14:29 -0000 1.5896
+++ ChangeLog 13 Mar 2008 12:23:06 -0000 1.5897
@@ -2,6 +2,10 @@
* testsuite/actionscript.all/Stage.as: tests with different cases,
whitespace and extra characters.
+ * server/asobj/Stage.{h,cpp}: add _displayState member, implement
+ displayState getter-setter. Make checks case-insensitive, but
+ not yet tolerant of whitespace or extra characters.
+ * gui/Player.cpp: listen for displayState.
2008-03-13 Benjamin Wolsey <address@hidden>
Index: server/asobj/Stage.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Stage.cpp,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- server/asobj/Stage.cpp 13 Mar 2008 11:23:16 -0000 1.34
+++ server/asobj/Stage.cpp 13 Mar 2008 12:23:07 -0000 1.35
@@ -31,6 +31,7 @@
#include "Object.h" // for getObjectInterface()
#include "AsBroadcaster.h" // for initializing self as a broadcaster
#include "namedStrings.h"
+#include "StringPredicates.h"
#include <string>
@@ -41,6 +42,7 @@
as_value stage_showMenu_getset(const fn_call& fn);
as_value stage_width_getset(const fn_call& fn);
as_value stage_height_getset(const fn_call& fn);
+as_value stage_displaystate_getset(const fn_call& fn);
static void
attachStageInterface(as_object& o)
@@ -81,13 +83,17 @@
vm.registerNative(getset, 666, 10);
o.init_property("showMenu", getset, getset);
+ getset = stage_displaystate_getset;
+ o.init_property("displayState", getset, getset);
+
}
Stage::Stage()
:
as_object(getObjectInterface()),
_scaleMode(showAll),
- _alignMode(ALIGN_MODE_NONE)
+ _alignMode(ALIGN_MODE_NONE),
+ _displayState(normal)
{
attachStageInterface(*this);
@@ -146,6 +152,16 @@
}
const char*
+Stage::getDisplayStateString()
+{
+ static const char* displayStateName[] = {
+ "normal",
+ "fullScreen" };
+
+ return displayStateName[_displayState];
+}
+
+const char*
Stage::getScaleModeString()
{
static const char* modeName[] = {
@@ -207,6 +223,27 @@
}
+void
+Stage::setDisplayState(DisplayState state)
+{
+ if ( _displayState == state ) return; // nothing to do
+
+ _displayState = state;
+
+ if (!movie_root::interfaceHandle) return; // No registered callback
+
+ if (_displayState == Stage::fullScreen)
+ {
+ (*movie_root::interfaceHandle)("Stage.displayState", "fullScreen");
+ }
+ else if (_displayState == Stage::normal)
+ {
+ (*movie_root::interfaceHandle)("Stage.displayState", "normal");
+ }
+
+}
+
+
as_value stage_scalemode_getset(const fn_call& fn)
{
boost::intrusive_ptr<Stage> stage = ensureType<Stage>(fn.this_ptr);
@@ -280,14 +317,28 @@
const std::string& str = fn.arg(0).to_string();
- if ( str == "T" ) mode = Stage::T;
- else if ( str == "B" ) mode = Stage::B;
- else if ( str == "L" ) mode = Stage::L;
- else if ( str == "R" ) mode = Stage::R;
- else if ( str == "LT" || str == "TL" ) mode = Stage::LT;
- else if ( str == "TR" || str == "RT" ) mode = Stage::TR;
- else if ( str == "LB" || str == "BL" ) mode = Stage::LB;
- else if ( str == "RB" || str == "BR" ) mode = Stage::RB;
+ StringNoCaseEqual noCaseCompare;
+
+ if ( noCaseCompare(str, "T") ) mode = Stage::T;
+ else if ( noCaseCompare(str, "B") ) mode = Stage::B;
+ else if ( noCaseCompare(str, "L") ) mode = Stage::L;
+ else if ( noCaseCompare(str, "R") ) mode = Stage::R;
+ else if ( noCaseCompare(str, "LT") || noCaseCompare(str, "TL") )
+ {
+ mode = Stage::LT;
+ }
+ else if ( noCaseCompare(str, "TR") || noCaseCompare(str, "RT") )
+ {
+ mode = Stage::TR;
+ }
+ else if ( noCaseCompare(str, "LB") || noCaseCompare(str, "BL") )
+ {
+ mode = Stage::LB;
+ }
+ else if ( noCaseCompare(str, "RB") || noCaseCompare(str, "BR") )
+ {
+ mode = Stage::RB;
+ }
else mode = Stage::ALIGN_MODE_NONE;
stage->setAlignMode(mode);
@@ -321,6 +372,35 @@
}
}
+as_value
+stage_displaystate_getset(const fn_call& fn)
+{
+ boost::intrusive_ptr<Stage> stage = ensureType<Stage>(fn.this_ptr);
+
+ if ( fn.nargs == 0 ) // getter
+ {
+ return as_value(stage->getDisplayStateString());
+ }
+ else // setter
+ {
+
+ StringNoCaseEqual noCaseCompare;
+
+ const std::string& str = fn.arg(0).to_string();
+ if ( noCaseCompare(str, "normal") )
+ {
+ stage->setDisplayState(Stage::normal);
+ }
+ else if ( noCaseCompare(str, "fullScreen") )
+ {
+ stage->setDisplayState(Stage::fullScreen);
+ }
+
+ // If invalid, do nothing.
+ return as_value();
+ }
+}
+
// extern (used by Global.cpp)
void stage_class_init(as_object& global)
{
Index: server/asobj/Stage.h
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Stage.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- server/asobj/Stage.h 12 Mar 2008 11:47:56 -0000 1.13
+++ server/asobj/Stage.h 13 Mar 2008 12:23:07 -0000 1.14
@@ -58,6 +58,12 @@
ALIGN_MODE_NONE
} AlignMode;
+ typedef enum {
+ normal,
+ fullScreen
+ } DisplayState;
+
+
Stage();
// override from as_object ?
@@ -95,6 +101,11 @@
const char* getAlignModeString();
+ /// Set display state
+ void setDisplayState(DisplayState state);
+
+ const char* getDisplayStateString();
+
private:
/// Notify all listeners about a resize event
@@ -103,6 +114,8 @@
ScaleMode _scaleMode;
AlignMode _alignMode;
+
+ DisplayState _displayState;
};