Merhaba Umut :), its the google mail stuff, I guess based on the ip. I am originaly half macedonian half czech, at present in Istanbul on a project. No idea how long will stay here.
If you are in Istanbul we can meet to have a beer Nick http://www.linkedin.com/in/tnick Sent from Devlet, Ankara, Turkey On Fri, Jan 15, 2010 at 4:36 PM, Ümit Uzun <[email protected]> wrote: > Hi Nikolov, > > What does > "http://www.linkedin.com/in/tnick<http://www.linkedin.com/in/tnick>Sent from > Devlet, Ankara, Turkey " mean. Is this undefined spam type? Your > location changing too fast. I am crious because I am from Turkey, too :D > > Regards. > > Ümit Uzun > > > 2010/1/15 Jean-Sébastien Guay <[email protected]> > >> Hi Nick, >> >> >> However, I started the osgwidgetinput example and for some reason it is >>> not getting my input from the keyboard. >>> >> >> This is the same problem I noticed in other osgWidget classes lately. >> Someone changed the signature of virtual methods in the EventInterface class >> (which Widget inherits and thus, all other Widgets too) adding a const, but >> didn't change the signature of methods that are supposed to overload those >> virtual methods in derived classes. So for example, EventInterface defines: >> >> virtual bool keyDown (int, int, const WindowManager*) { return false; } >> virtual bool keyUp (int, int, const WindowManager*) { return false; } >> >> but Input defines: >> >> virtual bool keyUp (int, int, WindowManager*); >> virtual bool keyDown (int, int, WindowManager*); >> >> So there is no compile error, but the base class methods are called >> instead of the derived class methods because their argument lists don't >> match. >> >> Here's the change for Input. It would be nice to go across all osgWidget >> classes and fix this if you have the time. I already did it for Frame a week >> or so ago, and this fixes Input, but there are bound to be more. >> >> Hope this helps, >> >> J-S >> -- >> ______________________________________________________ >> Jean-Sebastien Guay [email protected] >> http://www.cm-labs.com/ >> http://whitestar02.webhop.org/ >> >> /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2008 Robert Osfield >> * >> * This library is open source and may be redistributed and/or modified >> under >> * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or >> * (at your option) any later version. The full license is in LICENSE >> file >> * included with this distribution, and on the openscenegraph.orgwebsite. >> * >> * This library is distributed in the hope that it will be useful, >> * but WITHOUT ANY WARRANTY; without even the implied warranty of >> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> * OpenSceneGraph Public License for more details. >> */ >> >> // Code by: Jeremy Moles (cubicool) 2007-2008 >> >> #ifndef OSGWIDGET_INPUT >> #define OSGWIDGET_INPUT >> >> #include <osgWidget/Label> >> >> namespace osgWidget { >> >> // This is a string of values we use to try and determine the best Y >> // descent value (yoffset); you're welcome to use what works best for >> // your font. >> const std::string DESCENT_STRING("qpl"); >> >> class OSGWIDGET_EXPORT Input: public Label >> { >> public: >> >> Input(const std::string& = "", const std::string& = "", unsigned >> int = 20); >> >> virtual void parented (Window*); >> virtual void positioned (); >> >> virtual bool focus (const WindowManager*); >> virtual bool unfocus (const WindowManager*); >> virtual bool keyUp (int, int, const WindowManager*); >> virtual bool keyDown (int, int, const WindowManager*); >> >> void setCursor (Widget*); >> unsigned int calculateBestYOffset (const std::string& = "qgl"); >> >> void setXOffset(point_type xo) { >> _xoff = xo; >> } >> >> void setYOffset(point_type yo) { >> _yoff = yo; >> } >> >> void setXYOffset(point_type xo, point_type yo) { >> _xoff = xo; >> _yoff = yo; >> } >> >> osg::Drawable* getCursor() { >> return _cursor.get(); >> } >> >> const osg::Drawable* getCursor() const { >> return _cursor.get(); >> } >> >> point_type getXOffset() const { >> return _xoff; >> } >> >> point_type getYOffset() const { >> return _yoff; >> } >> >> XYCoord getXYOffset() const { >> return XYCoord(_xoff, _yoff); >> } >> >> protected: >> virtual void _calculateSize(const XYCoord&); >> >> void _calculateCursorOffsets(); >> >> point_type _xoff; >> point_type _yoff; >> >> unsigned int _index; >> unsigned int _size; >> unsigned int _cursorIndex; >> unsigned int _maxSize; >> >> std::vector<point_type> _offsets; >> osg::ref_ptr<Widget> _cursor; >> }; >> >> } >> >> #endif >> >> // -*-c++-*- osgWidget - Code by: Jeremy Moles (cubicool) 2007-2008 >> >> #include <osg/io_utils> >> #include <osgWidget/WindowManager> >> #include <osgWidget/Input> >> >> namespace osgWidget { >> >> Input::Input(const std::string& name, const std::string& label, unsigned >> int size): >> Label (name, label), >> _xoff (0.0f), >> _yoff (0.0f), >> _index (0), >> _size (0), >> _cursorIndex (0), >> _maxSize (size), >> _cursor (new Widget("cursor")) { >> _text->setAlignment(osgText::Text::LEFT_BOTTOM_BASE_LINE); >> _text->setKerningType(osgText::KERNING_NONE); >> >> // Make the cursor un-copyable. >> _cursor->setCanClone(false); >> _cursor->setDataVariance(osg::Object::DYNAMIC); >> _cursor->setColor(0.0f, 0.0f, 0.0f, 1.0f); >> >> setEventMask( >> // For showing/hiding the "cursor." >> EVENT_MASK_FOCUS | >> // For keypresses, obviously. >> EVENT_MASK_KEY | >> // For "click" focusing. >> EVENT_MOUSE_PUSH >> ); >> >> _offsets.resize(size, 0.0f); >> >> _text->getText().resize(size, ' '); >> _text->update(); >> } >> >> void Input::_calculateSize(const XYCoord& size) { >> // An Input cannot currently set it's own size RELIABLY until the >> osgText implementation >> // is dratiscally improved. I'm getting wildly crazy results. :( >> // point_type height = size.y() > _cursor->getHeight() ? size.y() : >> _cursor->getHeight(); >> >> #if 0 >> point_type width = size.x() + _cursor->getWidth(); >> point_type height = _cursor->getHeight(); >> >> if(width > getWidth()) setWidth(osg::round(width)); >> >> if(height > getHeight()) setHeight(osg::round(height)); >> #endif >> } >> >> void Input::_calculateCursorOffsets() { >> // Determine the "offset" >> const osgText::Text::TextureGlyphQuadMap& tgqm = >> _text->getTextureGlyphQuadMap(); >> >> const osgText::Text::TextureGlyphQuadMap::const_iterator tgqmi = >> tgqm.begin(); >> >> const osgText::Text::GlyphQuads& gq = tgqmi->second; >> >> osg::Vec3 pos = _text->getPosition(); >> >> for(unsigned int i = 0; i < _maxSize; i++) { >> osg::Vec3 ul = gq.getTransformedCoords(0)[0 + (i * 4)]; >> osg::Vec3 ll = gq.getTransformedCoords(0)[1 + (i * 4)]; >> osg::Vec3 lr = gq.getTransformedCoords(0)[2 + (i * 4)]; >> osg::Vec3 ur = gq.getTransformedCoords(0)[3 + (i * 4)]; >> >> _offsets[i] = lr.x() - pos.x(); >> >> // warn() << "vb: " << gq.getGlyphs()[i]->getHorizontalBearing() << >> std::endl; >> } >> } >> >> bool Input::focus(const WindowManager*) { >> _cursor->setColor(0.0f, 0.0f, 0.0f, 1.0f); >> >> return true; >> } >> >> bool Input::unfocus(const WindowManager*) { >> _cursor->setColor(0.0f, 0.0f, 0.0f, 0.0f); >> >> return true; >> } >> >> void Input::parented(Window* parent) { >> Label::parented(parent); >> >> _cursor->setSize(2.0f, _text->getCharacterHeight()); >> >> if(_cursorIndex) parent->getGeode()->setDrawable(_cursorIndex, >> _cursor.get()); >> >> else _cursorIndex = parent->addDrawableAndGetIndex(_cursor.get()); >> } >> >> void Input::positioned() { >> point_type ln = static_cast<point_type>(_text->getLineCount()); >> >> ln = ln == 0.0f ? 1.0f : ln; >> >> // point_type th = (_text->getCharacterHeight() * ln) + >> (_text->getLineSpacing() * (ln - 1.0f)); >> >> point_type x = getX() + _xoff; >> point_type y = getY() + _yoff; >> >> // XYCoord size = getTextSize(); >> >> _text->setPosition(osg::Vec3(x, y, _calculateZ(LAYER_MIDDLE))); >> >> point_type xoffset = _index > 0 ? _offsets[_index - 1] : 0.0f; >> >> _cursor->setOrigin(x + xoffset + 1.0f, y + 1.0f); >> _cursor->setZ(_calculateZ(LAYER_MIDDLE)); >> } >> >> bool Input::keyUp(int key, int mask, const WindowManager*) { >> return false; >> } >> >> bool Input::keyDown(int key, int mask, const WindowManager*) { >> osgText::String& s = _text->getText(); >> >> if(key == osgGA::GUIEventAdapter::KEY_BackSpace) { >> if(_index >= 1) { >> // s.erase(s.begin() + (_index - 1)); >> >> s[_index - 1] = ' '; >> >> _text->update(); >> >> _calculateCursorOffsets(); >> >> _index--; >> } >> } >> >> else { >> if(key > 255 || _index >= _maxSize) return false; >> >> // else if(_index < s.size()) s.insert(s.begin() + _index, key); >> // else if(_index == s.size()) s.push_back(key); >> >> s[_index] = key; >> >> _text->update(); >> >> _calculateCursorOffsets(); >> >> _index++; >> } >> >> // _text->update(); >> >> _calculateSize(getTextSize()); >> >> getParent()->resize(); >> >> return false; >> } >> >> void Input::setCursor(Widget*) { >> } >> >> unsigned int Input::calculateBestYOffset(const std::string& s) >> { >> >> const osgText::FontResolution fr(static_cast<unsigned >> int>(_text->getCharacterHeight()), >> static_cast<unsigned >> int>(_text->getCharacterHeight())); >> >> osgText::String utf(s); >> >> unsigned int descent = 0; >> >> for(osgText::String::iterator i = utf.begin(); i != utf.end(); i++) { >> osgText::Font* font = >> const_cast<osgText::Font*>(_text->getFont()); >> osgText::Font::Glyph* glyph = font->getGlyph(fr, *i); >> unsigned int d = >> abs((int)glyph->getHorizontalBearing().y()); >> >> if(d > descent) descent = d; >> } >> >> return descent; >> } >> >> } >> >> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> >> > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

