WIP: src/graphics, src/parsing: get multiplicity
This commit is contained in:
parent
3bb99b5a26
commit
5f2abbda15
|
@ -32,4 +32,5 @@ bool model_shutdown(void);
|
||||||
|
|
||||||
char model_get_dim(void);
|
char model_get_dim(void);
|
||||||
long model_get_dim_value(const char *axis);
|
long model_get_dim_value(const char *axis);
|
||||||
|
char model_get_multiplicity(void);
|
||||||
|
|
||||||
|
|
|
@ -235,14 +235,20 @@ void graphics_model_setup (const int stack_id)
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
|
|
||||||
struct graphic_stack_t *stack = &graphic_stack[stack_id];
|
struct graphic_stack_t *stack = &graphic_stack[stack_id];
|
||||||
|
char dimension;
|
||||||
|
long space_X;
|
||||||
|
long space_Y;
|
||||||
|
long space_Z;
|
||||||
|
int density_max;
|
||||||
|
char multiplicity;
|
||||||
|
|
||||||
char dimension = model_get_dim();
|
dimension = model_get_dim();
|
||||||
|
|
||||||
g_print("[GRAPH DEBUG] dim = %d\n", dimension);
|
g_print("[GRAPH DEBUG] dim = %d\n", dimension);
|
||||||
|
|
||||||
long space_X = 1;
|
space_X = 1;
|
||||||
long space_Y = 1;
|
space_Y = 1;
|
||||||
long space_Z = 1;
|
space_Z = 1;
|
||||||
|
|
||||||
switch(dimension) {
|
switch(dimension) {
|
||||||
case 3:
|
case 3:
|
||||||
|
@ -265,10 +271,12 @@ void graphics_model_setup (const int stack_id)
|
||||||
g_print("[GRAPH DEBUG] y = %ld\n", space_Y);
|
g_print("[GRAPH DEBUG] y = %ld\n", space_Y);
|
||||||
g_print("[GRAPH DEBUG] z = %ld\n", space_Z);
|
g_print("[GRAPH DEBUG] z = %ld\n", space_Z);
|
||||||
|
|
||||||
|
density_max = space_X * space_Y * space_Z;
|
||||||
int density_max = space_X * space_Y * space_Z;
|
|
||||||
stack->arrows_nb = 0;
|
stack->arrows_nb = 0;
|
||||||
|
|
||||||
|
multiplicity = model_get_multiplicity();
|
||||||
|
g_print("[GRAPH DEBUG] site_multiplicity = %ld\n", multiplicity);
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
|
|
||||||
/* S P A C E D R A W I N G */
|
/* S P A C E D R A W I N G */
|
||||||
|
@ -282,13 +290,9 @@ void graphics_model_setup (const int stack_id)
|
||||||
/* draw_grids_on_space_faces_lines (stack_id, stack->buffer_lines_size, */
|
/* draw_grids_on_space_faces_lines (stack_id, stack->buffer_lines_size, */
|
||||||
/* space_X, space_Y, space_Z); */
|
/* space_X, space_Y, space_Z); */
|
||||||
|
|
||||||
stack->buffer_vertex_0_arrow =
|
stack->buffer_vertex_0_arrow = stack->buffer_vertex_size;
|
||||||
stack->buffer_vertex_size;
|
stack->buffer_colors_0_arrow = stack->buffer_colors_size;
|
||||||
stack->buffer_colors_0_arrow =
|
stack->buffer_lines_0_arrow = stack->buffer_lines_size;
|
||||||
stack->buffer_colors_size;
|
|
||||||
stack->buffer_lines_0_arrow =
|
|
||||||
stack->buffer_lines_size;
|
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
*
|
*
|
||||||
* Desc: Model parsing functions
|
* Desc: Model parsing functions
|
||||||
*
|
*
|
||||||
* Copyright (C) 2023 Arthur Menges <arthur.menges@a-lec.org>
|
* Copyright (C) 2023 Jean Sirmai <jean@a-lec.org>
|
||||||
* Copyright (C) 2023 Adrien Bourmault <neox@a-lec.org>
|
* Copyright (C) 2024 Adrien Bourmault <neox@a-lec.org>
|
||||||
*
|
*
|
||||||
* This file is part of Gem-graph.
|
* This file is part of Gem-graph.
|
||||||
*
|
*
|
||||||
|
@ -96,7 +96,7 @@ bool model_shutdown(void)
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
static xmlNodePtr getNextChild(xmlNodePtr node, xmlChar *last)
|
static inline xmlNodePtr getNextChild(xmlNodePtr node, xmlChar *last)
|
||||||
{
|
{
|
||||||
while (node != NULL && xmlStrcmp(node->name, last)) {
|
while (node != NULL && xmlStrcmp(node->name, last)) {
|
||||||
// printf(" <>--- line n°%lu <%s>\n", xmlGetLineNo(node), node->name);
|
// printf(" <>--- line n°%lu <%s>\n", xmlGetLineNo(node), node->name);
|
||||||
|
@ -105,14 +105,14 @@ static xmlNodePtr getNextChild(xmlNodePtr node, xmlChar *last)
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
static xmlChar* splitStrAtSlash(xmlChar *toSplit)
|
static inline xmlChar* splitStrAtSlash(xmlChar *toSplit)
|
||||||
{
|
{
|
||||||
toSplit = (xmlChar *)xmlStrchr(toSplit, '/');
|
toSplit = (xmlChar *)xmlStrchr(toSplit, '/');
|
||||||
toSplit = xmlStrsub (toSplit, 1, xmlStrlen(toSplit));
|
toSplit = xmlStrsub (toSplit, 1, xmlStrlen(toSplit));
|
||||||
return toSplit;
|
return toSplit;
|
||||||
}
|
}
|
||||||
|
|
||||||
static xmlChar* getFirstTag(xmlChar *path)
|
static inline xmlChar* getFirstTag(xmlChar *path)
|
||||||
{
|
{
|
||||||
xmlChar *preop = path;
|
xmlChar *preop = path;
|
||||||
path = (xmlChar *)xmlStrchr(path, '/');
|
path = (xmlChar *)xmlStrchr(path, '/');
|
||||||
|
@ -124,16 +124,15 @@ static xmlChar* getFirstTag(xmlChar *path)
|
||||||
return xmlStrsub (preop, 0, xmlStrlen(preop) - xmlStrlen(path) - 1);
|
return xmlStrsub (preop, 0, xmlStrlen(preop) - xmlStrlen(path) - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static xmlChar* getLastTag(xmlChar *path)
|
static inline xmlChar* getLastTag(xmlChar *path)
|
||||||
{
|
{
|
||||||
while ((ulong)xmlStrchr (path, '/')) path = splitStrAtSlash((xmlChar *)path);
|
while ((ulong)xmlStrchr (path, '/'))
|
||||||
|
path = splitStrAtSlash((xmlChar *)path);
|
||||||
|
|
||||||
// printf("last tag in the path = <%s>\n", path);
|
// printf("last tag in the path = <%s>\n", path);
|
||||||
return path; // which is no more the given path but only its last tag !
|
return path; // which is no more the given path but only its last tag !
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
/******************************************************************************/
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
static xmlNodePtr model_get_node(xmlChar *path)
|
static xmlNodePtr model_get_node(xmlChar *path)
|
||||||
|
@ -264,6 +263,32 @@ long model_get_dim_value(const char *axis)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char model_get_multiplicity(void)
|
||||||
|
{
|
||||||
|
xmlAttr *attribute;
|
||||||
|
xmlChar* value;
|
||||||
|
xmlNodePtr node = model_get_node(
|
||||||
|
(xmlChar *)"parameters/space-param/site_multiplicity");
|
||||||
|
|
||||||
|
if (node->children)
|
||||||
|
if (node->children->content)
|
||||||
|
return (char)strtol((char *)node->children->content, NULL, 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char model_get_condition(void)
|
||||||
|
{
|
||||||
|
xmlAttr *attribute;
|
||||||
|
xmlChar* value;
|
||||||
|
xmlNodePtr node = model_get_node(
|
||||||
|
(xmlChar *)"parameters/space-param/dimension");
|
||||||
|
|
||||||
|
if (xmlHasProp (node, (xmlChar *) "z")) return 3;
|
||||||
|
if (xmlHasProp (node, (xmlChar *) "y")) return 2;
|
||||||
|
if (xmlHasProp (node, (xmlChar *) "x")) return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
char model_get_cond_tree (xmlChar *path)
|
char model_get_cond_tree (xmlChar *path)
|
||||||
{
|
{
|
||||||
|
@ -297,14 +322,6 @@ int model_get_cond (xmlChar *path, xmlChar *node_id)
|
||||||
node = getNextChild(node->next, (xmlChar *)"condition");
|
node = getNextChild(node->next, (xmlChar *)"condition");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int model_get_multiplicity (xmlChar *path)
|
|
||||||
{
|
|
||||||
xmlNodePtr node = model_get_node(path);
|
|
||||||
if (node)
|
|
||||||
return (int)strtol((char *)xmlNodeGetContent(node), NULL, 0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int model_get_objects_list(xmlChar *path)
|
int model_get_objects_list(xmlChar *path)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue