Skip to content
Snippets Groups Projects
Forked from gmsh / gmsh
17766 commits behind the upstream repository.
  • Christophe Geuzaine's avatar
    1930bbe2
    airport work: · 1930bbe2
    Christophe Geuzaine authored
    - new button under the graphic window to temporarily disable mouse
      selection (speeds-up redrawing of very large models + permits to
      rotate/zoom-in a model in selection mode even when the whole screen
      is full of selectable entities--e.g. a surface mesh)
    
    - new "lasso" selection mode (to select entities using the same kind
      of lasso as the lasso zoom: just Ctrl+click, then drag the mouse in
      selection mode; the shortcuts are the same as for the lasso zoom)
    
    - it is now possible to unselect entities using the middle mouse button
      (only for the creation of physicals at the moment; not sure if it's
      useful in the other cases)
    
    - new button in visibility browser to invert the current selection
      (very useful e.g. when multiple physical entities are associated
      with a given elementary entity, in order to "peel" away the model
      when adding new physicals; cf. philou)
    
    - changed meaning of Escape shortcut (cancel lasso or toggle mouse
      selection) + restore standard fltk Escape handling for all dialog
      windows
    
    - updated copyright string
    
    - new mesh label mode (coordinates); all label types are now also
      available for mesh vertices
    
    - added option in 'Print Option' dialog to disable printing of help
      strings
    
    - added a comment string with the date when creating a new file
    
    - new snapping grid for adding points in the GUI
    1930bbe2
    History
    airport work:
    Christophe Geuzaine authored
    - new button under the graphic window to temporarily disable mouse
      selection (speeds-up redrawing of very large models + permits to
      rotate/zoom-in a model in selection mode even when the whole screen
      is full of selectable entities--e.g. a surface mesh)
    
    - new "lasso" selection mode (to select entities using the same kind
      of lasso as the lasso zoom: just Ctrl+click, then drag the mouse in
      selection mode; the shortcuts are the same as for the lasso zoom)
    
    - it is now possible to unselect entities using the middle mouse button
      (only for the creation of physicals at the moment; not sure if it's
      useful in the other cases)
    
    - new button in visibility browser to invert the current selection
      (very useful e.g. when multiple physical entities are associated
      with a given elementary entity, in order to "peel" away the model
      when adding new physicals; cf. philou)
    
    - changed meaning of Escape shortcut (cancel lasso or toggle mouse
      selection) + restore standard fltk Escape handling for all dialog
      windows
    
    - updated copyright string
    
    - new mesh label mode (coordinates); all label types are now also
      available for mesh vertices
    
    - added option in 'Print Option' dialog to disable printing of help
      strings
    
    - added a comment string with the date when creating a new file
    
    - new snapping grid for adding points in the GUI
Edge.h 2.20 KiB
#ifndef _EDGE_H_
#define _EDGE_H_

// Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
// 
// Please report all bugs and problems to <gmsh@geuz.org>.

#include "List.h"
#include "Tree.h"
#include "Vertex.h"
#include "Simplex.h"

class Edge {
public :
  int Num;
  Vertex *V[2];
  List_T *Simplexes;
  List_T *Quadrangles;
  List_T *Hexahedra;
  List_T *Prisms;
  List_T *Pyramids;
  Vertex *newv;
  Vertex *O[2];
  double a;
  List_T *Liste;
  List_T *Points;
  Edge(){
    Num = 0;
    Simplexes = NULL;
    Quadrangles = NULL;
    Hexahedra = NULL;
    Prisms = NULL;
    Pyramids = NULL;
    Liste = NULL;
    Points = NULL;
  }
  ~Edge(){ ; }
};

class EdgesContainer
{
  public :
    Tree_T * AllEdges;
    EdgesContainer(Tree_T *Simplexes);
    EdgesContainer(List_T *Surfaces);
    EdgesContainer();
    ~EdgesContainer();
    void AddSimplexTree(Tree_T *Simplexes);
    void AddQuadrangleTree(Tree_T *Quadrangles);
    void AddHexahedronTree(Tree_T *Hexahedra);
    void AddPrismTree(Tree_T *Prisms);    
    void AddPyramidTree(Tree_T *Pyramids);
    void AddEdges(Simplex *s);
    void AddEdges(Quadrangle *q);
    void AddEdges(Hexahedron *h);
    void AddEdges(Prism *p);
    void AddEdges(Pyramid *p);
    void RemoveEdge(Edge *e);
    void SwapEdge(Vertex *v[2]);
    bool Search(Vertex *v1, Vertex *v2);
    void Print();
};

void Free_Edge(void *a, void *b);

int compareEdge(const void *a, const void *b);
int compareEdgePtr(const void *a, const void *b);
int compareEdgeAngle(const void *a, const void *b);

#endif