[root] / trunk / graf3d / eve / src / TEveProjectionManager.cxx Repository:
ViewVC logotype

Log of /trunk/graf3d/eve/src/TEveProjectionManager.cxx

Parent Directory Parent Directory


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 33037 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Apr 15 13:58:19 2010 UTC (4 years, 9 months ago) by matevz
File length: 13004 byte(s)
Diff to previous 32528
* TEveElement: Add function
    virtual void ProjectAllChildren(Bool_t same_depth=kTRUE);
  that allows all children of given element to be project into the
  same projected views where this element is existing.

* TEveProjectionManager: Add function:
    virtual Int_t SubImportChildren(TEveElement* el, TEveElement* proj_parent);
  that implements the above operation for a single projection.

Revision 32528 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Mar 10 17:02:54 2010 UTC (4 years, 10 months ago) by matevz
File length: 11776 byte(s)
Diff to previous 32478
Add support for projections of elements with non-trivial transformation
matrix. This works for TEvePointSet, TEveLine, TEveTrack and TEveBox.
It was already working for TEveGeoShape before.

Add class TEveBoxProjected and its GL-rendering class.

Add class TEvePoint -- 2D float point.

Implement 2D convex-hull search in static method
  TEveShape::FindConvexHull().

Use ClassDefNV for TEveVector, TEvePoint and TEvePathMark classes.

Consistently include "Riostream.h".

Revision 32478 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Mar 5 14:20:48 2010 UTC (4 years, 10 months ago) by matevz
File length: 11993 byte(s)
Diff to previous 32440
* TEveElement
  Introduce new function
    virtual void PaintStandard(TObject* id);
  that contains common code cut-n-pasted in Paint() method of several
  EVE classes. Many of them now simply call this method.
  Many includes became unnecessary and were removed in the processes.

* TEveShape
* TEvePolygonSetProjected
  TEveShape is a new abstract base-class for 2D/3D shapes that require
  fill color and outline color / line-width.
  This was extracted from TEvePolygonSetProjected class.
  TEvePolygonSetProjectedEditor was removed -- all functionality is in
  TEveShapeEditor.

All other changes are just simplifactions of the Paint() method.

Revision 32440 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Mar 2 14:43:43 2010 UTC (4 years, 10 months ago) by matevz
File length: 11776 byte(s)
Diff to previous 30840
Add support for projecting a new child of an element after the element
and its old children have already been projected. This is provided by:
  void TEveElement::ProjectChild(TEveElement* el, Bool_t sameDepth);

* TEveElement
  Add method:
    virtual void ProjectChild(TEveElement* el, Bool_t  sameDepth=kTRUE);

* TEveProjectionManager
  Add method:
    virtual TEveElement* SubImportElements(TEveElement* el, TEveElement* proj_parent);

* TEveProjectable:
  Add methods Begin/EndProjectects() to allow iteration over existing
  projected replicas.

* TEveProjected:
  Add getters GetManager() and GetDepth().

Revision 30840 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Oct 23 09:03:14 2009 UTC (5 years, 3 months ago) by matevz
File length: 10759 byte(s)
Diff to previous 29772
Add support for 3D -> 3D projections. This also allows for
scaling (compression/extension) of certain space region as required by
NA62 to show the 200m long detector in a meaningful way.

Several generalizations of the projection infrastructure were
required:

1. TEveProjectable::ProjectedClass() takes an argument:
     virtual TClass* ProjectedClass(const TEveProjection* p) const = 0;
   thus allowing different projected classes for different projections.

2. All TEveProjection::ProjectPoint/Vector(...) functions have an
   additional "depth" argument thus allowing the projected classes to
   skip explicit setting of depth after the point has been projected
   -- this could damage the 3rd component.

   Pre-scaling now supports 3 dimensions.

3. Abstract TEveProjected::SetDepth() has been split into two parts:
   a) It has been implemented in the base class where it checks for
      the projection type (2d) before calling the local function;
   b) Abstract SetDepthLocal() has been added to provide the same
      functionality.
   This allows for the 2d/3d check to be done in place only.

4. New projection class has been introduced: TEve3DProjection.
   It performs pre-scaling and offsets the center.

5. To simplify the projection of lists TEveElementList has been made
   projectable and corresponding TEveElementListProjected class
   introduced. This also fixed the problem with render-state not being
   propagated to projected classes.
   The check whether to project a sub-tree of elements is still performed.

6. TEveGeoShapeProjected has been introduced to represent the 3D
   projection of a TEveGeoShape (2D projection is handled by
   TEvePolygonSetProjected).

   Points, lines and tracks use the same projected class for both 2D
   and 3D projections.

An example showing this functionality has been added as a new tab in
tutorials/eve/projection_prescale.C.

Revision 29772 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Aug 12 18:45:02 2009 UTC (5 years, 5 months ago) by matevz
File length: 10282 byte(s)
Diff to previous 29754
Fix an issue with wrongly-initalized bounding-boxes for empty
containers.

Revision 29754 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Aug 11 15:48:54 2009 UTC (5 years, 5 months ago) by matevz
File length: 10143 byte(s)
Diff to previous 24314
* TGLBoundingBox:
  - IsEmpty() was using Volume() to decide whether the box is empty.
    This caused scenes with 2d objects only to be ignored during scene
    selection in TGLViewerBase::PreRender().

* TGLCamera:
  - Use TGLBoundingBox::Diagonal() instead of Volume() also for
    calculation of OfInterest().

* EVE classes:
  - remove workarounds for the TGLBoundingBox bug that accumulated
    over time.

Revision 24314 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jun 17 18:19:53 2008 UTC (6 years, 7 months ago) by matevz
File length: 10200 byte(s)
Diff to previous 24147
TEveManager
===========

Keep projections in an array and reuse them when changing
projection-types. This allows parameters set by users to be kept for
each projection type separately (only center is controlled by manager).


TEveProjections
===============

Introduce pre-scaling of projected objects: users can specify
different scaling factors for regions of projected coordinate space.
Fish-eye distortion is applied afterwards.

Demonstrated by the new tutorial 'projection_test_prescale.C'.

Revision 24147 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jun 4 19:48:39 2008 UTC (6 years, 7 months ago) by matevz
File length: 10026 byte(s)
Diff to previous 24001
- TEveProjectionManager:
  Added member 'Bool_t fImportEmpty' - this forces the projection manager
  to also import sub-trees without any projectable elements.
  Useful if one expects a completely parallel element structure in
  projected replica.

- TEveSelection:
  Added method 'void RemoveImpliedSelected(TEveElement* el)' needed for
  deregistration of implied-selected elements during their destruction.

- TEveManager:
  - In PreDeleteElement() check if the element is implied selected or
    highlighted and deregister it from there.
  - In function InsertVizDBEntry():
    a) added argument 'Bool_t update';
    b) when replacing the model-element copy its children to the new
       model and optionally update their viz-params.

- TEveElement:
  - Add methods to simplify propagation of visualization-parameters
    between model-elements and their clients
  - Add members 'Int_t fParentIgnoreCnt, fTopItemCnt' that allow
    better tracking of references in view of automatic destruction.
  - Consolidate Has/Num|Children/Parents() methods.

- TEveGeoNode:
  Use TEveElement::HasChildren() instead of checking container size.

Revision 24001 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri May 23 20:58:14 2008 UTC (6 years, 8 months ago) by matevz
File length: 9793 byte(s)
Diff to previous 23979
Optimize updates of element visibility by introducing a new stamp-type
and preprocessing the changed elements in TEveManager::DoRedraw3D().

Make TEveElement::AddStamp() virtual. This allows sub-classes to react
to different changes within the element.
This also simplifes handling of visibility for TEveGeoNode and
TEveSceneInfo.

TEveProjection manager properly maintains compound-element relation.

Finalize propagation of visibility and color from compounds to
compound elements and from projectables to projecteds.

Add three new selection propagation modes (compound, compound and
projectable, master).

Remove obsolete method TEveElement::UpdateItems() and all its
incarnations.

Replace asserts in TEveTrackPropagator::HelixToBounds() with a warning
as this case can actually occur due to numerical errors for tracks with
pZ close to zero.

Revision 23979 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu May 22 19:28:49 2008 UTC (6 years, 8 months ago) by matevz
File length: 9563 byte(s)
Diff to previous 23140
Propagation of main-color and render-state from:
a) compounds to compound-members;
b) projectables to projected elements.

New tutorial to test/demonstrate compounds (not complete).

Revision 23140 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Apr 11 11:01:39 2008 UTC (6 years, 9 months ago) by rdm
File length: 9516 byte(s)
Diff to previous 22539
move the following directories to "graf2d":

asimage, freetype, gpad, graf, postscript, qt, win32gdk, x11, x11ttf

move the following directories to "graf3d":

eve, ftgl, g3d, gl, x3d

Revision 22539 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Mar 8 14:36:37 2008 UTC (6 years, 10 months ago) by rdm
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 9516 byte(s)
Diff to previous 21887
From Alja, Bertrand & Matevz: merged branches/dev/fireworks 21757:22514.

This includes:

- development for event-displays of ALICE and CMS since 5.18 in eve/,
  gl/ and gui/;

- many new tutorials and demos for eve/;

- fix in TQObject to support class-signals from all base-classes.

Revision 21887 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jan 28 18:34:46 2008 UTC (6 years, 11 months ago) by matevz
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 7965 byte(s)
Diff to previous 21881
Propagate bounding-box changes from projection-manager to axis-painter.

Revision 21881 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jan 28 16:24:14 2008 UTC (6 years, 11 months ago) by matevz
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 7790 byte(s)
Diff to previous 21652
From Alja:

Move rendering of axes from TEveProjectionManager to new class
TEveProjectionAxes. Use TEveText functionality for rendering of
tick-mark labels.

Add new members for FTFont configuration in TEveText.

New demo: tutorials/eve/projection_test.C.

Revision 21652 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jan 11 17:13:04 2008 UTC (7 years ago) by matevz
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 8025 byte(s)
Diff to previous 21534
Cleanup includes in TEveManager.h and add them in cxx files that actually need them.

Revision 21534 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Dec 20 12:17:22 2007 UTC (7 years, 1 month ago) by matevz
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 8004 byte(s)
Diff to previous 21215
Fix a bug in TEveElement::Destroy(): the destruction was not properly
propagated to parents and thus redraw was not performed.

Extend strings providing information about exceptions.

Consolidate variable name for exception header in files that were
modified during the above changes.

Revision 21215 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 5 17:19:23 2007 UTC (7 years, 1 month ago) by matevz
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 7918 byte(s)
Diff to previous 21198
Prefix all enum values with 'k'.

Revision 21198 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 5 02:31:27 2007 UTC (7 years, 1 month ago) by matevz
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 7916 byte(s)
Diff to previous 21167
Prefix enum types with 'E'.

Fix fix member names to begin with f[A-Z].

Fix function member names to begin with a capital letter.

Add some docs.

Revision 21167 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Dec 4 01:01:27 2007 UTC (7 years, 1 month ago) by matevz
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 7915 byte(s)
Diff to previous 21054
Fix warnings about size_t.
Add some docs.
Change magnetic field units from kGauss to Tesla.

Revision 21054 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Nov 26 18:00:41 2007 UTC (7 years, 1 month ago) by matevz
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 7898 byte(s)
Diff to previous 21044
When including ROOT header files use "" instead of <>.

Replace NULL with 0 in TEveGLText.

TEveTrackPropagator: make public data-members protected and provide
get/set methods. Second attempt at fixing Solaris cc errors: make
Helix and Vertex4d struct declarations public.

Revision 21044 - (view) (download) (as text) (annotate) - [select for diffs]
Added Mon Nov 26 14:31:05 2007 UTC (7 years, 1 month ago) by rdm
Original Path: trunk/eve/src/TEveProjectionManager.cxx
File length: 7898 byte(s)
from Matevz:
add the TEve classes to the svn trunk. Code compiles without warnings on
MacOS X, Linux and Windows XP. Tutorials still don't work, as init code
is still missing (coming later today).

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

Subversion Admin
ViewVC Help
Powered by ViewVC 1.0.9