Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-22.04' }}
permissions:
# required for all workflows
security-events: write
Expand Down Expand Up @@ -64,6 +64,8 @@ jobs:
# or others). This is typically only required for manual builds.
# - name: Setup runtime (example)
# uses: actions/setup-example@v1
- name: dependencies
run: sudo apt install --fix-missing cmake gcc gfortran libx11-dev libglu1-mesa-dev libmotif-dev tcsh libxaw7-dev libglew-dev libdlm-dev libgl2ps-dev libpng-dev

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,31 @@
jobs:
build:

runs-on: ubuntu-latest
runs-on: ubuntu-22.04

strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/arm/v6
- linux/arm/v7
- linux/arm64

steps:
- uses: actions/checkout@v4

- name: dependencies
run: sudo apt install cmake gcc gfortran libx11-dev libglu1-mesa-dev libmotif-dev tcsh libxaw7-dev libglew-dev libdlm-dev libgl2ps-dev
run: sudo apt install --fix-missing cmake gcc gfortran libx11-dev libglu1-mesa-dev libmotif-dev tcsh libxaw7-dev libglew-dev libdlm-dev libgl2ps-dev libpng-dev

- name: clean
run: make clean

- name: configure
run: make config

- name: Build
run: make build

- name: Install test
run: make install

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
23 changes: 11 additions & 12 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.9...3.31)
PROJECT(PHIGS)

SET(CMAKE_MODULE_PATH ${PHIGS_SOURCE_DIR}/cmake)

FIND_PACKAGE(PNG REQUIRED)
FIND_PACKAGE(OpenGL REQUIRED)
FIND_PACKAGE(X11 REQUIRED)
FIND_PACKAGE(XMU REQUIRED)
FIND_PACKAGE(Motif REQUIRED)
FIND_PACKAGE(GLEW)
FIND_PACKAGE(epoxy)

if (APPLE)
set(CMAKE_C_COMPILER gcc)
set(CMAKE_C_COMPILER_ID GNU)
Expand Down Expand Up @@ -28,31 +38,21 @@ if (OPENPHIGS_FORCE_32)
message(STATUS "PHIGS: Guess for 32bit: OPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY}")
endif()

SET(CMAKE_MODULE_PATH ${PHIGS_SOURCE_DIR}/cmake)
set(GLEW_VERBOSE ON)

# for debugging
add_definitions(-g)
# add_definitions(-DTEST)
# add_definitions(-DDEBUG)
# add_definitions(-DDEBUGL)
# add_definitions(-DDEBUGINP)

#
# use Motif widgets rather than Xaw
add_definitions(-DMOTIF)

FIND_PACKAGE(PNG REQUIRED)
FIND_PACKAGE(OpenGL REQUIRED)
FIND_PACKAGE(X11 REQUIRED)
FIND_PACKAGE(XMU REQUIRED)
FIND_PACKAGE(Motif REQUIRED)

# use GLEW or epoxy
if (USE_GLEW)
if (APPLE)
set (GLEW_USE_STATIC_LIBS "ON")
endif()
FIND_PACKAGE(GLEW)
add_definitions(-DGLEW)
set (GL_INCLUDES ${GLEW_INCLUDE_DIR})
else()
Expand Down Expand Up @@ -112,7 +112,6 @@ if (USE_GLEW)
m
)
else()
FIND_PACKAGE(epoxy)
SET(PHIGS_LIBRARIES
phigs
${XLIBS}
Expand Down
16 changes: 16 additions & 0 deletions src/cmake/FindGLEW.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
FIND_LIBRARY(GLEW_LIBRARIES
NAMES GLEW
PATHS /usr/lib
PATHS /usr/X11/lib
PATHS /usr/openwin/lib
PATHS /opt/homebrew/lib)

IF (GLEW_LIBRARIES)
SET (GLEW_FOUND TRUE)
ENDIF (GLEW_LIBRARIES)

IF (GLEW_FOUND)
MESSAGE (STATUS "Found GLEW:" ${GLEW_LIBRARIES})
ELSE (GLEW_FOUND)
MESSAGE (FATAL ERROR "Cannot find GLEW")
ENDIF (GLEW_FOUND)
5 changes: 3 additions & 2 deletions src/cmake/FindXMU.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ FIND_LIBRARY(XMU_LIBRARY
NAMES Xmu
PATHS /usr/lib
PATHS /usr/X11/lib
PATHS /usr/openwin/lib)
PATHS /usr/openwin/lib
PATHS /opt/homebrew/lib)

IF (XMU_LIBRARY)
SET (XMU_FOUND TRUE)
ENDIF (XMU_LIBRARY)

IF (XMU_FOUND)
MESSAGE (STATUS "Found Xmu:")
MESSAGE (STATUS "Found Xmu:" ${XMU_LIBRARY})
ELSE (XMU_FOUND)
MESSAGE (FATAL ERROR "Cannot find Xmu")
ENDIF (XMU_FOUND)
Expand Down
5 changes: 4 additions & 1 deletion src/libphigs/c_binding/cb_extel.c
Original file line number Diff line number Diff line change
Expand Up @@ -1149,6 +1149,9 @@ void pset_model_clip_ind(
else if (clipi < 0) {
ERR_REPORT(PHG_ERH, ERR112);
}
else if (clipi > 2) {
ERR_REPORT(PHG_ERH, ERR112);
}
else {
args.el_type = PELEM_MODEL_CLIP_IND;
args.el_size = sizeof(Pint);
Expand Down Expand Up @@ -1183,7 +1186,7 @@ void pset_model_clip_vol3 (
if (PSL_STRUCT_STATE(PHG_PSL) != PSTRUCT_ST_STOP) {
ERR_REPORT(PHG_ERH, ERR5);
}
else if ( op < 0) {
else if ( op < 0 || op > 2) {
/* the value of op is not important as this is anyway not used */
ERR_REPORT(PHG_ERH, ERR112);
}
Expand Down
45 changes: 0 additions & 45 deletions src/libphigs/f_binding/fb_el.c
Original file line number Diff line number Diff line change
Expand Up @@ -751,51 +751,6 @@ FTN_SUBROUTINE(psiasf)(
pset_indiv_asf(attrid, asfval);
}

/*******************************************************************************
* psmcli
*
* DESCR: set modelling clipping indicator
* RETURNS: N/A
*/
FTN_SUBROUTINE(psmcli)(
FTN_INTEGER(mclipi)
)
{
Pint clipi = FTN_INTEGER_GET(mclipi);
pset_model_clip_ind(clipi);
}

/*******************************************************************************
* psmcv3
*
* DESCR: set modelling clipping volume 3
* RETURNS: N/A
*/
FTN_SUBROUTINE(psmcv3)(
FTN_INTEGER(op),
FTN_INTEGER(nhalfs),
FTN_REAL_ARRAY(halfsp)
)
{
Pint iop = FTN_INTEGER_GET(op);
Pint num = FTN_INTEGER_GET(nhalfs);
Phalf_space_list3 spacelist;
Phalf_space3 list[num];
int i;

spacelist.num_half_spaces = num;
for (i=0; i<num; i++){
list[i].point.x = FTN_REAL_ARRAY_GET(halfsp, 0 + i*6);
list[i].point.y = FTN_REAL_ARRAY_GET(halfsp, 1 + i*6);
list[i].point.z = FTN_REAL_ARRAY_GET(halfsp, 2 + i*6);
list[i].norm.delta_x = FTN_REAL_ARRAY_GET(halfsp, 3 + i*6);
list[i].norm.delta_y = FTN_REAL_ARRAY_GET(halfsp, 4 + i*6);
list[i].norm.delta_z = FTN_REAL_ARRAY_GET(halfsp, 5 + i*6);
}
spacelist.half_spaces = &list[0];
pset_model_clip_vol3(iop, spacelist);
}

/*******************************************************************************
* psedci
*
Expand Down
44 changes: 44 additions & 0 deletions src/libphigs/f_binding/fb_extel.c
Original file line number Diff line number Diff line change
Expand Up @@ -797,3 +797,47 @@ FTN_SUBROUTINE(psisi)(
Pint iindex = FTN_INTEGER_GET(ii);
pset_int_style_ind(iindex);
}
/*******************************************************************************
* psmcli
*
* DESCR: set modelling clipping indicator
* RETURNS: N/A
*/
FTN_SUBROUTINE(psmcli)(
FTN_INTEGER(mclipi)
)
{
Pint clipi = FTN_INTEGER_GET(mclipi);
pset_model_clip_ind(clipi);
}

/*******************************************************************************
* psmcv3
*
* DESCR: set modelling clipping volume 3
* RETURNS: N/A
*/
FTN_SUBROUTINE(psmcv3)(
FTN_INTEGER(op),
FTN_INTEGER(nhalfs),
FTN_REAL_ARRAY(halfsp)
)
{
Pint iop = FTN_INTEGER_GET(op);
Pint num = FTN_INTEGER_GET(nhalfs);
Phalf_space_list3 spacelist;
Phalf_space3 list[num];
int i;

spacelist.num_half_spaces = num;
for (i=0; i<num; i++){
list[i].point.x = FTN_REAL_ARRAY_GET(halfsp, 0 + i*6);
list[i].point.y = FTN_REAL_ARRAY_GET(halfsp, 1 + i*6);
list[i].point.z = FTN_REAL_ARRAY_GET(halfsp, 2 + i*6);
list[i].norm.delta_x = FTN_REAL_ARRAY_GET(halfsp, 3 + i*6);
list[i].norm.delta_y = FTN_REAL_ARRAY_GET(halfsp, 4 + i*6);
list[i].norm.delta_z = FTN_REAL_ARRAY_GET(halfsp, 5 + i*6);
}
spacelist.half_spaces = &list[0];
pset_model_clip_vol3(iop, spacelist);
}
4 changes: 2 additions & 2 deletions src/libphigs/wsgl/wsgl.c
Original file line number Diff line number Diff line change
Expand Up @@ -605,8 +605,8 @@ void wsgl_begin_structure(
wsgl->cur_struct.offset = 0;
phg_mat_copy(wsgl->cur_struct.global_tran, wsgl->composite_tran);
phg_mat_identity(wsgl->cur_struct.local_tran);
wsgl_set_clip_ind(ws, 0); // FIXME
wsgl_set_alpha_channel(ws, 1.0); // FIXME
wsgl_set_clip_ind(ws, 0);
wsgl_set_alpha_channel(ws, 1.0);
wsgl_update_modelview(ws);

if (wsgl->render_mode == WS_RENDER_MODE_SELECT) {
Expand Down
67 changes: 49 additions & 18 deletions src/libphigs/wsgl/wsgl_attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,9 @@
#include "ws.h"
#include "private/wsglP.h"

extern GLint clipping_ind, num_clip_planes, plane0, point0;
extern GLint clipping_ind, num_clip_planes;
extern GLint plane0, point0;
extern GLint plane1, point1;
extern GLint shading_mode;
extern GLint ModelViewMatrix, ProjectionMatrix;
extern GLint alpha_channel;
Expand Down Expand Up @@ -242,8 +244,13 @@ void wsgl_set_clip_ind(
glUniform1i(clipping_ind, ind);
if (ind == 1) {
glEnable(GL_CLIP_PLANE0);
glDisable(GL_CLIP_PLANE1);
} else if (ind == 2) {
glEnable(GL_CLIP_PLANE0);
glEnable(GL_CLIP_PLANE1);
} else {
glDisable(GL_CLIP_PLANE0);
glDisable(GL_CLIP_PLANE1);
}
}
}
Expand Down Expand Up @@ -283,8 +290,10 @@ void wsgl_set_clip_vol3(
int op, num;
int * int_data = (int*) el_data;
Phalf_space3 * list;
Phalf_space3 volume0;
Ppoint3 tmp1, tmp2, vol3, point3, pwc;
Phalf_space3 volume0, volume1;
Ppoint3 nn0, pt0; /* first plane */
Ppoint3 nn1, pt1; /* second plane if any */
Ppoint3 vol3, point3, pwc;
Pmatrix3 vrc2wc, unity;

#ifdef GLEW
Expand All @@ -297,21 +306,43 @@ void wsgl_set_clip_vol3(
op = int_data[0];
num = int_data[1];
list = (Phalf_space3 *)(&int_data[2]);
volume0 = list[0];
/* take a local copy of the data */
tmp1.x = volume0.norm.delta_x;
tmp1.y = volume0.norm.delta_y;
tmp1.z = volume0.norm.delta_z;

tmp2.x = volume0.point.x;
tmp2.y = volume0.point.y;
tmp2.z = volume0.point.z;

glUniform1i(num_clip_planes, num);
glUniform4f(plane0, tmp1.x, tmp1.y, tmp1.z, 0.);
GLdouble eqn0[4] = {tmp1.x, tmp1.y, tmp1.z, 0.};
glClipPlane(GL_CLIP_PLANE0, eqn0);
glUniform4f(point0, tmp2.x, tmp2.y, tmp2.z, 0.);
if (1 == num || 2 ==num){
glUniform1i(num_clip_planes, num);
/* first plane */
volume0 = list[0];
/* take a local copy of the data */
nn0.x = volume0.norm.delta_x;
nn0.y = volume0.norm.delta_y;
nn0.z = volume0.norm.delta_z;

pt0.x = volume0.point.x;
pt0.y = volume0.point.y;
pt0.z = volume0.point.z;

glUniform4f(plane0, nn0.x, nn0.y, nn0.z, 0.);
GLdouble eqn0[4] = {nn0.x, nn0.y, nn0.z, 0.};
glClipPlane(GL_CLIP_PLANE0, eqn0);
glUniform4f(point0, pt0.x, pt0.y, pt0.z, 0.);
if (2 ==num){
/* first plane */
volume1 = list[1];
/* take a local copy of the data */
nn1.x = volume1.norm.delta_x;
nn1.y = volume1.norm.delta_y;
nn1.z = volume1.norm.delta_z;

pt1.x = volume1.point.x;
pt1.y = volume1.point.y;
pt1.z = volume1.point.z;

glUniform4f(plane1, nn1.x, nn1.y, nn1.z, 0.);
GLdouble eqn1[4] = {nn1.x, nn1.y, nn1.z, 0.};
glClipPlane(GL_CLIP_PLANE1, eqn1);
glUniform4f(point1, pt1.x, pt1.y, pt1.z, 0.);
}
} else {
glUniform1i(num_clip_planes, 0); /* ignore the call */
}
}
}

Expand Down
Loading