Browse Source

Imported General Polygon Clipper library, which could come in handy to cut up faces to accomplish texture tiling

master
Nico de Poel 3 years ago
parent
commit
e5b2e6244a
  1. 2
      .gitignore
  2. 2
      PS1BSP.vcxproj
  3. 6
      PS1BSP.vcxproj.filters
  4. 2511
      gpc.cpp
  5. 133
      gpc.h

2
.gitignore

@ -10,3 +10,5 @@ Debug/
*.tim *.tim
*.ps1mdl *.ps1mdl
*.tga *.tga
*.user
stuff/

2
PS1BSP.vcxproj

@ -141,6 +141,7 @@
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="gpc.cpp" />
<ClCompile Include="lighting.cpp" /> <ClCompile Include="lighting.cpp" />
<ClCompile Include="main.cpp" /> <ClCompile Include="main.cpp" />
<ClCompile Include="texture.cpp" /> <ClCompile Include="texture.cpp" />
@ -149,6 +150,7 @@
<ItemGroup> <ItemGroup>
<ClInclude Include="bsp.h" /> <ClInclude Include="bsp.h" />
<ClInclude Include="common.h" /> <ClInclude Include="common.h" />
<ClInclude Include="gpc.h" />
<ClInclude Include="lighting.h" /> <ClInclude Include="lighting.h" />
<ClInclude Include="ps1bsp.h" /> <ClInclude Include="ps1bsp.h" />
<ClInclude Include="ps1types.h" /> <ClInclude Include="ps1types.h" />

6
PS1BSP.vcxproj.filters

@ -30,6 +30,9 @@
<ClCompile Include="lighting.cpp"> <ClCompile Include="lighting.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="gpc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="bsp.h"> <ClInclude Include="bsp.h">
@ -71,6 +74,9 @@
<ClInclude Include="tim.h"> <ClInclude Include="tim.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="gpc.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<CopyFileToFolders Include="palette.lmp"> <CopyFileToFolders Include="palette.lmp">

2511
gpc.cpp
File diff suppressed because it is too large
View File

133
gpc.h

@ -0,0 +1,133 @@
/*
===========================================================================
Project: Generic Polygon Clipper
A new algorithm for calculating the difference, intersection,
exclusive-or or union of arbitrary polygon sets.
File: gpc.h
Author: Alan Murta (email: gpc@cs.man.ac.uk)
Version: 2.33
Date: 21st May 2014
Copyright: (C) Advanced Interfaces Group,
University of Manchester.
This software is free for non-commercial use. It may be copied,
modified, and redistributed provided that this copyright notice
is preserved on all copies. The intellectual property rights of
the algorithms used reside with the University of Manchester
Advanced Interfaces Group.
You may not use this software, in whole or in part, in support
of any commercial product without the express consent of the
author.
There is no warranty or other guarantee of fitness of this
software for any purpose. It is provided solely "as is".
===========================================================================
*/
#ifndef __gpc_h
#define __gpc_h
#include <cstdio>
/*
===========================================================================
Constants
===========================================================================
*/
/* Increase GPC_EPSILON to encourage merging of near coincident edges */
#define GPC_EPSILON (DBL_EPSILON)
#define GPC_VERSION "2.33"
/*
===========================================================================
Public Data Types
===========================================================================
*/
typedef enum /* Set operation type */
{
GPC_DIFF, /* Difference */
GPC_INT, /* Intersection */
GPC_XOR, /* Exclusive or */
GPC_UNION /* Union */
} gpc_op;
typedef struct /* Polygon vertex structure */
{
double x; /* Vertex x component */
double y; /* vertex y component */
} gpc_vertex;
typedef struct /* Vertex list structure */
{
int num_vertices; /* Number of vertices in list */
gpc_vertex *vertex; /* Vertex array pointer */
} gpc_vertex_list;
typedef struct /* Polygon set structure */
{
int num_contours; /* Number of contours in polygon */
int *hole; /* Hole / external contour flags */
gpc_vertex_list *contour; /* Contour array pointer */
} gpc_polygon;
typedef struct /* Tristrip set structure */
{
int num_strips; /* Number of tristrips */
gpc_vertex_list *strip; /* Tristrip array pointer */
} gpc_tristrip;
/*
===========================================================================
Public Function Prototypes
===========================================================================
*/
void gpc_read_polygon (FILE *infile_ptr,
int read_hole_flags,
gpc_polygon *polygon);
void gpc_write_polygon (FILE *outfile_ptr,
int write_hole_flags,
gpc_polygon *polygon);
void gpc_add_contour (gpc_polygon *polygon,
gpc_vertex_list *contour,
int hole);
void gpc_polygon_clip (gpc_op set_operation,
gpc_polygon *subject_polygon,
gpc_polygon *clip_polygon,
gpc_polygon *result_polygon);
void gpc_tristrip_clip (gpc_op set_operation,
gpc_polygon *subject_polygon,
gpc_polygon *clip_polygon,
gpc_tristrip *result_tristrip);
void gpc_polygon_to_tristrip (gpc_polygon *polygon,
gpc_tristrip *tristrip);
void gpc_free_polygon (gpc_polygon *polygon);
void gpc_free_tristrip (gpc_tristrip *tristrip);
#endif
/*
===========================================================================
End of file: gpc.h
===========================================================================
*/
Loading…
Cancel
Save