DefaultObjectMarker.cc 4.51 KB
Newer Older
1 2 3
/*===========================================================================*\
 *                                                                           *
 *                              OpenFlipper                                  *
Jan Möbius's avatar
Jan Möbius committed
4
 *      Copyright (C) 2001-2010 by Computer Graphics Group, RWTH Aachen      *
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
 *                           www.openflipper.org                             *
 *                                                                           *
 *---------------------------------------------------------------------------*
 *  This file is part of OpenFlipper.                                        *
 *                                                                           *
 *  OpenFlipper is free software: you can redistribute it and/or modify      *
 *  it under the terms of the GNU Lesser General Public License as           *
 *  published by the Free Software Foundation, either version 3 of           *
 *  the License, or (at your option) any later version with the              *
 *  following exceptions:                                                    *
 *                                                                           *
 *  If other files instantiate templates or use macros                       *
 *  or inline functions from this file, or you compile this file and         *
 *  link it with other files to produce an executable, this file does        *
 *  not by itself cause the resulting executable to be covered by the        *
 *  GNU Lesser General Public License. This exception does not however       *
 *  invalidate any other reasons why the executable file might be            *
 *  covered by the GNU Lesser General Public License.                        *
 *                                                                           *
 *  OpenFlipper 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            *
 *  GNU Lesser General Public License for more details.                      *
 *                                                                           *
 *  You should have received a copy of the GNU LesserGeneral Public          *
 *  License along with OpenFlipper. If not,                                  *
 *  see <http://www.gnu.org/licenses/>.                                      *
 *                                                                           *
\*===========================================================================*/

/*===========================================================================*\
 *                                                                           *
 *   $Revision: 83 $                                                         *
 *   $Author: moebius $                                                      *
 *   $Date: 2009-02-27 17:31:45 +0100 (Fr, 27. Feb 2009) $                   *
 *                                                                           *
\*===========================================================================*/
42 43

#include <OpenFlipper/common/Types.hh>
44
#include <OpenFlipper/common/BaseObjectData.hh>
45 46 47 48 49 50
#include "DefaultObjectMarker.hh"

//******************************************************************************

const ACG::Vec4f base_color (0.6,0.6,0.6,1.0);
const ACG::Vec4f source_color (0.6,0.6,1.0,1.0);
51
const ACG::Vec4f target_color (1.0,1.0,1.0,1.0);
52 53 54 55
const ACG::Vec4f source_target_color (0.6,1.0,1.0,1.0);

//******************************************************************************

56
bool DefaultObjectMarker::stencilRefForObject(BaseObjectData * _obj, GLuint & _reference)
57 58 59 60 61 62 63 64 65 66 67
{
  if (!_obj->target() && !_obj->source())
  {
    _reference = 1;
    return true;
  }
  else if (!_obj->target() && _obj->source())
  {
    _reference = 2;
    return true;
  }
68
  else if (_obj->target() && !_obj->source())
69 70 71 72
  {
    _reference = 3;
    return true;
  }
73 74 75 76 77
  else if (_obj->target() && _obj->source())
  {
    _reference = 4;
    return true;
  }
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

  return false;
}

bool DefaultObjectMarker::blendForStencilRefNumber(GLuint _reference, GLenum & _src, GLenum & _dst, ACG::Vec4f & _color)
{
  _src = GL_ZERO;
  _dst = GL_SRC_COLOR;

  switch (_reference)
  {
    case 1:
      _color = base_color;
      return true;
    case 2:
      _color = source_color;
      return true;
    case 3:
96 97 98
      _color = target_color;
      return true;
    case 4:
99 100 101 102 103 104 105 106
      _color = source_target_color;
      return true;
    default:
      return false;
  }
  return false;
}