Merhaba Nikolov,

If you come Ankara, we may can meet :) Sorry for special question about
company!

See you...
Regards.

Ümit Uzun


2010/1/15 Trajce Nikolov <nikolov.tra...@gmail.com>

> hi Umut,
>
> I might have a short trip to Ankara soon. I am not going to disclose the
> company :)
>
> Nick
>
> http://www.linkedin.com/in/tnick
> Sent from Devlet, Ankara, Turkey
>
> On Fri, Jan 15, 2010 at 4:58 PM, Ümit Uzun <umituzu...@gmail.com> wrote:
>
>> Merhaba Nikolov :)
>>
>> I would have been glad to meet you,  but I stay in Ankara :( I think you
>> are on graphical prject in Istanbul. Which company works based on 3D
>> environment and simulation on Istanbul?
>>
>> Nice to meet you.
>> Saygilar :D
>>
>> Ümit Uzun
>>
>>
>> 2010/1/15 Trajce Nikolov <nikolov.tra...@gmail.com>
>>
>> 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 <umituzu...@gmail.com> 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 <jean-sebastien.g...@cm-labs.com>
>>>>
>>>>>  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    jean-sebastien.g...@cm-labs.com
>>>>>                               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
>>>>> osg-users@lists.openscenegraph.org
>>>>>
>>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> osg-users mailing list
>>>> osg-users@lists.openscenegraph.org
>>>>
>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>>
>>>>
>>>
>>> _______________________________________________
>>> osg-users mailing list
>>> osg-users@lists.openscenegraph.org
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>>
>>>
>>
>> _______________________________________________
>> osg-users mailing list
>> osg-users@lists.openscenegraph.org
>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>>
>>
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to