Navi

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
RedEagle
Gnoblar
Posts: 22
Joined: Thu Jan 04, 2007 9:39 pm

Post by RedEagle »

Hey ajs15822!

Sorry for the late response to you suggestion! I still can't scroll down a page clicking and dragging the scroll bar, or write on a NaviMaterial, even changing all injectMaterial functions :( The strangest thing is that I can select text on a NaviMaterial by dragging and dropping! Well... I'll keep digging ;)
mklann
Kobold
Posts: 33
Joined: Sun Jan 21, 2007 7:24 pm

rotate image

Post by mklann »

Hi guys,

we are currently testing Navi for creating an interface that we render-to-texture onto the screen of a virtual device in our environment.

On that interface we would like to display bitmap icons. That we managed to do easily with positioning divs. What I didn't find a solution for until now is rotating bitmaps icons. Seems there is no css way of doing that. Did I overlook something or ss there a different way in Navi?

Many thanks!

Markus
User avatar
Kanma
Halfling
Posts: 61
Joined: Sun Feb 22, 2004 3:41 pm
Location: Martigny, Switzerland
Contact:

Post by Kanma »

Caius wrote:I have a question, about licensing issues.
Navi is LGPL and Firefox is GPL.
Is it possible to make a closed source project that uses Navi, and that show webpages using firefox sdk?
Firefox is in fact licensed under a MPL/GPL/LGPL "triple license", so you can use it to make a closed source project.
pilgrimm2000
Gnoblar
Posts: 1
Joined: Sun Sep 02, 2007 4:24 pm

Problem with pageNaviData.get()

Post by pilgrimm2000 »

Hi,

in my project i changes from html to xhtml because of use of svg graphics.
With this change my javascript code for writing text isn`t functioning anymore. I clasped my javascript with //<!CDATA[...expression but without any luck.

</div>
<div id="start_beacon_ID2">
<script type="text/javascript">
//<![CDATA[
if(pageNaviData.doesExist("start_beacon"))
{
document.write(pageNaviData.get("start_beacon"));
}
//]]>
</script>
</div>

Has anyone an idear what could got wrong?

philipp
kcbanner
Goblin
Posts: 208
Joined: Sat May 05, 2007 4:49 pm

Post by kcbanner »

Is there a working linux build of Navi yet?
User avatar
Kanma
Halfling
Posts: 61
Joined: Sun Feb 22, 2004 3:41 pm
Location: Martigny, Switzerland
Contact:

Post by Kanma »

Just a suggestion: maybe you should ask Sinbad for a dedicated subforum in the addons one?
kcbanner
Goblin
Posts: 208
Joined: Sat May 05, 2007 4:49 pm

Post by kcbanner »

I agree, one thread for everyone's probs doesn't work lol
mklann
Kobold
Posts: 33
Joined: Sun Jan 21, 2007 7:24 pm

urgent: programmatic control of svg

Post by mklann »

I second the point about a separate forum!

Hey guys, if anybody of you has some experience with controlling svg through javascript on a navi that's rendered on a texture, we'd really appreciate some help. See the posting above from pilgrimm2000.

The javascript worked before introducing svg, after it didn't anymore.

Thanks!

Markus
User avatar
ajs15822
OGRE Expert User
OGRE Expert User
Posts: 570
Joined: Mon Jan 02, 2006 2:05 am
Location: Texas
x 2
Contact:

Post by ajs15822 »

"Hay, wat happened to ajs15822? Why isn't he replying as often?"

Wooo, been busy getting into the flow of a new semester @ my college. Once I find my rhythm, I'll be able to give Navi some more lovin'.
RedEagle wrote:Hey ajs15822!

Sorry for the late response to you suggestion! I still can't scroll down a page clicking and dragging the scroll bar, or write on a NaviMaterial, even changing all injectMaterial functions. The strangest thing is that I can select text on a NaviMaterial by dragging and dropping! Well... I'll keep digging.
I'll try to put together a test case this weekend and see if I can't offer more help. Until then, good luck! :D
mklann wrote:Hi guys,

we are currently testing Navi for creating an interface that we render-to-texture onto the screen of a virtual device in our environment.

On that interface we would like to display bitmap icons. That we managed to do easily with positioning divs. What I didn't find a solution for until now is rotating bitmaps icons. Seems there is no css way of doing that. Did I overlook something or ss there a different way in Navi?

Many thanks!

Markus
To do vector manipulation you have three options:
- The <canvas> tag.
- SVG (best, imo)
- Flash
pilgrimm2000 wrote:Hi,

in my project i changes from html to xhtml because of use of svg graphics.
With this change my javascript code for writing text isn`t functioning anymore. I clasped my javascript with //<!CDATA[...expression but without any luck.

</div>
<div id="start_beacon_ID2">
<script type="text/javascript">
//<![CDATA[
if(pageNaviData.doesExist("start_beacon"))
{
document.write(pageNaviData.get("start_beacon"));
}
//]]>
</script>
</div>

Has anyone an idear what could got wrong?

philipp
Hey there philipp, as of NaviLibrary v1.4, that method of page initialization has been deprecated in favor of application side-initialization.

The issue you're facing here is that 'document.write()' can invalidate the XHTML DOM. Thus, you must instead update the contents (.innerHTML) of individual elements via javascript.

In v1.4, all pages that include 'Navi.js' will send an empty piece of NaviData to the application named 'ready' when the DOM is ready to be manipulated/changed. Thus, you just bind your initialization function to 'ready' and intialize page elements using 'NaviManager::naviEvaluateJS'.

Code: Select all

NaviManager::Get().bind("myNavi", "ready", NaviDelegate(this, &MyApplication::initializeMyNavi));

// somewhere else:
void MyApplication::initializeMyNavi(const NaviData &naviData)
{
	std::string myText = "This text was generated by the application!";
	NaviManager::Get().naviEvaluateJS("myNavi", "$('start_beacon_ID2').setHTML('" + myText + "')");
}
The code in the current SVN is pretty much what v1.4 will be when it is released. The only delay is my writing new documentation/tutorials/wiki articles for the new release.
kcbanner wrote:Is there a working linux build of Navi yet?
The agenda for v1.5 is integrating LLMozLib's latest code dump (of which there is some experimental support for Linux/Mac). So sorry, not yet.
Kanma wrote:Just a suggestion: maybe you should ask Sinbad for a dedicated subforum in the addons one?
kcbanner wrote:I agree, one thread for everyone's probs doesn't work lol
mklann wrote:I second the point about a separate forum!
Humm, maybe :D. I hadn't realized this little project had grown so much.

If yall would have it, I would actually like to establish a forum on my own server to have more freedom of organization and creative reign.
mklann wrote:Hey guys, if anybody of you has some experience with controlling svg through javascript on a navi that's rendered on a texture, we'd really appreciate some help. See the posting above from pilgrimm2000.

The javascript worked before introducing svg, after it didn't anymore.

Thanks!

Markus
A month or two ago, I was really into SVG + Javascript. I'll see what I can do about putting a few examples up on the wiki.
mklann
Kobold
Posts: 33
Joined: Sun Jan 21, 2007 7:24 pm

thanks and svg

Post by mklann »

Hi ajs15822,

thanks a lot for the reply - we'll try your suggestion to resolve the update issue right away.

About svg: what would be really helpful is a very simple example of rotating with the keyboard an svg bitmap object on a rendered-to-texture Navi. If the bitmap doesn't work we can also redraw our icons as svg.

If we manage to do this with svg, we'll be switching to Navi in our application and I'd be happy to provide some documented samples.

Best,

Markus
User avatar
madmark
Goblin
Posts: 292
Joined: Fri Jul 22, 2005 8:14 pm
Location: Midwest USA
Contact:

Post by madmark »

Updated NaviLua for anyone using it.

Info here.

Mostly a release to conform to the API changes in version of the SVN repository. There are a few bugfixes as well.


Also: I can set up a forum for Navi users on my WBI worksite if all y'alls would like, but the idea of getting an official Ogre addon forum is waaaaaay better.
Chaster
OGRE Expert User
OGRE Expert User
Posts: 557
Joined: Wed May 05, 2004 3:19 pm
Location: Portland, OR, USA
Contact:

Post by Chaster »

madmark wrote:Updated NaviLua for anyone using it.

Info here.

Mostly a release to conform to the API changes in version of the SVN repository. There are a few bugfixes as well.


Also: I can set up a forum for Navi users on my WBI worksite if all y'alls would like, but the idea of getting an official Ogre addon forum is waaaaaay better.
I wasn't sure if NaviLua was "up to date" with Navi (since Navi's API seems to change quite a bit and quickly still) but I *want* to use it, so I'll take a look.

I also vote for an Ogre Addon forum since it's much more convenient for me to just go to this website to check the forums. I dislike having to go to multiple websites to check on various projects (which are all Ogre related).

Chaster
User avatar
madmark
Goblin
Posts: 292
Joined: Fri Jul 22, 2005 8:14 pm
Location: Midwest USA
Contact:

Post by madmark »

Now working on getting my stuff working under SVN version 16 and I have an issue with page NaviData.

The example on page 14 of this thread does not seem to work

Code: Select all

		if($defined($PND.get))
		{
            document.write("NaviData Present<br\>");
		    if($defined($PND.get("buttons")))
		    {
		        document.write("Button string: " + $PND.get("buttons")+"<br\>");
		    }
		    else
				    {
		        document.write("NO Button string!!!<br\>");
		    }
		
		}
 		else
		{
		    document.write("NaviData Not Present<br\>");
		}
Always displays "NaviData Not Present" even though I am certain that there isNaviNata...

UPDATE: Changed Navi.js to init $PND to null and changed the test above against null and have the same result. I am getting the "ready" NaviData passed back so that domReady event is firing, just not defining a $PND.

I also displayed the url and it has valid NaviData
Last edited by madmark on Wed Sep 05, 2007 8:56 pm, edited 2 times in total.
pra
Halfling
Posts: 55
Joined: Sat Jul 15, 2006 4:03 pm
Contact:

Post by pra »

haven't read the entire thread, here some questions:
-i have no GUI with openGL. Is this an ogre problem, somehow related to my graphics card/its drivers or what? edit: updated drivers, no effect
-what about fonts? are system's fonts used? can I add custom fonts? if yes, what formats are supported?
-is there still the limitation with powers-of-2 sizes?
User avatar
ajs15822
OGRE Expert User
OGRE Expert User
Posts: 570
Joined: Mon Jan 02, 2006 2:05 am
Location: Texas
x 2
Contact:

Post by ajs15822 »

@mklann: Sure, I'll try to write up an example for you this evening.

@madmark: w00t! Thanks a lot!

@chaster: If yall really want Navi in an Ogre Subforum, I have no objections.

@madmark:
Well, you opened up a can of worms: 'if($defined($PND.get))'. You're checking whether or not the member property 'get' is defined or not (not the actual result of get()).

I understand what you wish to do (check whether or not NaviData has been passed to the page) and have realized a flaw in my implementation. Your inline javascript (<script> tags inside the <body>) is executed before the DOM is actually ready, thus $PND, at that point in time, is equal to 'Class.empty' (see line 7358 of Navi.js).

I think a much better compromise would be to initialize $PND on that line to '$ND('')' instead, so that in your inline javascript, you could just do: "if($PND.getName().length)" in place of your previous statement.

Humm, this also means I will have to move the chunk of code below line 7358 into the global scope (that is, it is executed before the DOM is ready) so that you could actually work with $PND using inline javascript.

I'll update the SVN in a bit.

Still, the reason I hadn't caught this earlier is because this method of using $PND and 'document.write' to alter the contents of the page is deprecated. You should use application-side javascript evaluation to initialize page elements, (see my reply to pilgrimm2000 above).

Sorry for the confusion, some new tutorials are coming that should clear all this up.

@pra
- On my laptop's videocard, Ogre's dynamic textures in OpenGL do not work. Running the NaviDemo or the Ogre DynTex demo under OpenGL gives me non-visible materials. Haven't had the time to go on a witch hunt yet.
- System fonts are used, there is no way at this time to make Gecko use custom fonts that aren't registered with the OS. If you wish to use a custom font, you'll have to install it along with your executable.
- Nope, that limitation is non-existent with Navi v1.4.
User avatar
madmark
Goblin
Posts: 292
Joined: Fri Jul 22, 2005 8:14 pm
Location: Midwest USA
Contact:

Post by madmark »

Figured out my problem!

The $PND is created at the domReady event while I am using inline JavaScript to set up my menu. My code was being run before the URL was decoded.

Once I moved the code that builds the $PND var out of that function, all was well.

Any suggestions on how to work around this or should I just go with this modified version of Navi.js. That would sort of suck...
User avatar
ajs15822
OGRE Expert User
OGRE Expert User
Posts: 570
Joined: Mon Jan 02, 2006 2:05 am
Location: Texas
x 2
Contact:

Post by ajs15822 »

madmark wrote:Figured out my problem!

The $PND is created at the domReady event while I am using inline JavaScript to set up my menu. My code was being run before the URL was decoded.

Once I moved the code that builds the $PND var out of that function, all was well.

Any suggestions on how to work around this or should I just go with this modified version of Navi.js. That would sort of suck...
I fixed that bug and refactored some of the initialization code for $PND. It's in the trunk right now. :wink:
pra
Halfling
Posts: 55
Joined: Sat Jul 15, 2006 4:03 pm
Contact:

Post by pra »

ajs15822 wrote:@pra
- On my laptop's videocard, Ogre's dynamic textures in OpenGL do not work. Running the NaviDemo or the Ogre DynTex demo under OpenGL gives me non-visible materials. Haven't had the time to go on a witch hunt yet.
so it's the card's fault :(
DynTex works fine, though, the only demo I have problems with is the DereferredShader (or something like that), everything else works fine since the driver update...
well, I hope there's a way to fix it...
- System fonts are used, there is no way at this time to make Gecko use custom fonts that aren't registered with the OS. If you wish to use a custom font, you'll have to install it along with your executable.
what do you think, would a JS function to replace chars with corresponding images use too much performance?^^
or, maybe there's an ogre function to create a single image with the desired text in the desired font (putting single images together or stuff)
- Nope, that limitation is non-existent with Navi v1.4.
that's good

oh, and another thing: do different navis share the javascript vars and functions, or are they like different tabs in firefox?
pra
Halfling
Posts: 55
Joined: Sat Jul 15, 2006 4:03 pm
Contact:

Post by pra »

ajs15822 wrote:- Nope, that limitation is non-existent with Navi v1.4.
err, i was a n00b and haven't noticed that the current version is 1.3 -.-
and here I do have problems if not power-of-2...
User avatar
ajs15822
OGRE Expert User
OGRE Expert User
Posts: 570
Joined: Mon Jan 02, 2006 2:05 am
Location: Texas
x 2
Contact:

Post by ajs15822 »

pra wrote:what do you think, would a JS function to replace chars with corresponding images use too much performance?^^
or, maybe there's an ogre function to create a single image with the desired text in the desired font (putting single images together or stuff)
Nope, neither of those methods will work . :( This is really an issue with Gecko: Gecko doesn't support CSS2 @font-face (dynamic fonts) yet, and who knows when, if ever, they will. Thus, if you really really must have custom fonts, you'll just have to install it along with your distributable.
oh, and another thing: do different navis share the javascript vars and functions, or are they like different tabs in firefox?
Each Navi has its own individual script context, very much like separate tabs.




Going off on a tangent here, I'm getting a little annoyed at the current API for evaluating/executing Javascript in Navi. This is ugly:

Code: Select all

string myString = "somevalue";
NaviManager::Get().naviEvaluateJS("myNavi", "$('someID').setHTML('" + myString + "')");

string txtboxVal = NaviManager::Get().naviEvaluateJS("myNavi", "$('textboxID').getValue()");
Maybe it might be cooler if we could just grab an object from NaviManager that lets you execute/evaluate JavaScript on a certain Navi. It also might have a few commonly-used JavaScript methods exposed:

Code: Select all

JSContext myContext = NaviManager::Get().getNaviJSContext("myNavi");

myContext.eval("$('someID').setStyle('color', 'blue')");
myContext.setHTML("someID", "somevalue");
string txtboxVal = myContext.getValue("textboxID");
Dunno, tell me what you think. :D
User avatar
ajs15822
OGRE Expert User
OGRE Expert User
Posts: 570
Joined: Mon Jan 02, 2006 2:05 am
Location: Texas
x 2
Contact:

Post by ajs15822 »

pra wrote:
ajs15822 wrote:- Nope, that limitation is non-existent with Navi v1.4.
err, i was a n00b and haven't noticed that the current version is 1.3 -.-
and here I do have problems if not power-of-2...
v1.4 = SVN

It's pretty much solid for right now, I'm just waiting to release it until I finish writing new tutorials/docs/articles.
pra
Halfling
Posts: 55
Joined: Sat Jul 15, 2006 4:03 pm
Contact:

Post by pra »

ajs15822 wrote:Nope, neither of those methods will work . :( This is really an issue with Gecko: Gecko doesn't support CSS2 @font-face (dynamic fonts) yet, and who knows when, if ever, they will. Thus, if you really really must have custom fonts, you'll just have to install it along with your distributable.
I don't understand. I meant a function that takes a string, and replaces the chars with IMG tags. ie. 'omfg' => '<img src="o.png"><img src="m.png"><img src="f.png"><img src="g.png">'. I think this may be useful sometimes, thinking of a big main menu, perhaps...
Going off on a tangent here, I'm getting a little annoyed at the current API for evaluating/executing Javascript in Navi. This is ugly:

Code: Select all

string myString = "somevalue";
NaviManager::Get().naviEvaluateJS("myNavi", "$('someID').setHTML('" + myString + "')");

string txtboxVal = NaviManager::Get().naviEvaluateJS("myNavi", "$('textboxID').getValue()");
Maybe it might be cooler if we could just grab an object from NaviManager that lets you execute/evaluate JavaScript on a certain Navi. It also might have a few commonly-used JavaScript methods exposed:

Code: Select all

JSContext myContext = NaviManager::Get().getNaviJSContext("myNavi");

myContext.eval("$('someID').setStyle('color', 'blue')");
myContext.setHTML("someID", "somevalue");
string txtboxVal = myContext.getValue("textboxID");
Dunno, tell me what you think. :D
what about a simple wrapper for certain stuff? like

Code: Select all

Navi myNavi = naviMgr->getById("someObjectsId"); 
myNavi = naviMgr->getByName("someObjectsName",2); //same as document.getElementsByName("someObjectsName")[2]
myNavi = naviMgr->getByTag("div",5); //same as document.getElementsByTagName("div")[5]
String someStuff = myNavi->getAttribute("innerHTML");
myNavi->setAttribute("innerHTML","some stuff");
String bgcolor = myNavi->getStyleValue("background-color");
myNavi->setStyleValue("position","absolute");

EDIT: downloaded navi from svn, tried width=1020, but it just crashes. in debug mode, it breaks in Navi.cpp, line 426,

Code: Select all

pDest[y*pitch+destx] = naviCache[y*pitch+destx] = B;

more edit: it is possible to make navis "movable" and then move them with right-drag. is it possible to define what exactly you have to do to move them, or even make dragging only possible if clicking a certain region?
and onDblClick seems not to work...

and another edit: openGL seems not to work if I use alpha masks. as soon as I comment the line with "setNaviMask" out, i can see the navi

btw, is there a tutorial for mootools usage? it seems dragging with mootools is much more peformant than my own approach^^
User avatar
madmark
Goblin
Posts: 292
Joined: Fri Jul 22, 2005 8:14 pm
Location: Midwest USA
Contact:

Post by madmark »

ajs15822 wrote:Still, the reason I hadn't caught this earlier is because this method of using $PND and 'document.write' to alter the contents of the page is deprecated. You should use application-side javascript evaluation to initialize page elements, (see my reply to pilgrimm2000 above).
If you have made the changes to support the inline stuff, is it still deprecated? Not complaining, I see the reasoning, but I have a bunch of scripts that do this in my current project that I really don't want to go back and "do right"...

ajs15822 wrote: - Nope, that limitation is non-existent with Navi v1.4.
Wow, must have missed this. Good news indeed!
User avatar
danharibo
Minaton
Posts: 997
Joined: Sat Feb 25, 2006 8:14 pm
Location: Wales, United Kingdom
Contact:

Post by danharibo »

OGRE EXCEPTION(7:InternalErrorException): LLMozLib failed initialization, could not Startup NaviManager. in NaviManager::Startup at .\Source\NaviManager.cpp (line 93)

Code: Select all

	//Test Navi...
	using namespace NaviLibrary;
	NaviManager::Get().Startup(mWindow);

	NaviManager::Get().createNavi("myFirstNavi", "local://BuildLog.html", NaviPosition(Center), 400, 320);
(Build Log is just <b>Hi!</b>)
User avatar
Noman
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 714
Joined: Mon Jan 31, 2005 7:21 pm
Location: Israel
x 2
Contact:

Post by Noman »

I just updated to the latest SVN navi, and im getting an error :

Unhandled exception at 0x0043fcd8 in TeamEditorDebug.exe: 0xC0000005: Access violation writing location 0x03765020.

navi.cpp (void Navi::update), line 426

Code: Select all

				size_t destx = x * destPixelSize;
				pDest[y*pitch+destx] = naviCache[y*pitch+destx] = B; <------------------
				pDest[y*pitch+destx+1] = naviCache[y*pitch+destx+1] = G;
				pDest[y*pitch+destx+2] = naviCache[y*pitch+destx+2] = R;
				pDest[y*pitch+destx+3] = A * fadeMod;
				naviCache[y*pitch+destx+3] = A;
y was 469, x was 0, pitch was 4096 (resolution is 1024x768, so it makes sense)

Any idea what it could be?
Post Reply