some fixes, and patch bobtoolz improvements, from osxnetradiant
git-svn-id: svn://svn.icculus.org/netradiant/trunk@403 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
parent
f2516c981f
commit
71562074b6
18
Makefile
18
Makefile
|
|
@ -184,9 +184,11 @@ ifeq ($(OS),Darwin)
|
||||||
CFLAGS_COMMON += -fPIC
|
CFLAGS_COMMON += -fPIC
|
||||||
CXXFLAGS_COMMON += -fno-exceptions -fno-rtti
|
CXXFLAGS_COMMON += -fno-exceptions -fno-rtti
|
||||||
CPPFLAGS_COMMON += -I/sw/include -I/usr/X11R6/include
|
CPPFLAGS_COMMON += -I/sw/include -I/usr/X11R6/include
|
||||||
LDFLAGS_COMMON += -L/sw/lib -L/usr/lib -L/usr/X11R6/lib
|
LDFLAGS_COMMON += -L/sw/lib -L/usr/X11R6/lib
|
||||||
|
#LDFLAGS_COMMON += -L/sw/lib -L/usr/lib -L/usr/X11R6/lib
|
||||||
LDFLAGS_DLL += -dynamiclib -ldl
|
LDFLAGS_DLL += -dynamiclib -ldl
|
||||||
EXE ?= ppc
|
EXE ?= ppc
|
||||||
|
MACLIBDIR ?= /sw/lib
|
||||||
A = a
|
A = a
|
||||||
DLL = dylib
|
DLL = dylib
|
||||||
MWINDOWS =
|
MWINDOWS =
|
||||||
|
|
@ -906,12 +908,12 @@ $(INSTALLDIR)/plugins/ufoaiplug.$(DLL): \
|
||||||
contrib/ufoaiplug/ufoai_level.o \
|
contrib/ufoaiplug/ufoai_level.o \
|
||||||
contrib/ufoaiplug/ufoai.o \
|
contrib/ufoaiplug/ufoai.o \
|
||||||
|
|
||||||
#$(INSTALLDIR)/plugins/bkgrnd2d.$(DLL): LIBS_EXTRA := $(LIBS_GLIB) $(LIBS_GTK)
|
$(INSTALLDIR)/plugins/bkgrnd2d.$(DLL): LIBS_EXTRA := $(LIBS_GLIB) $(LIBS_GTK)
|
||||||
#$(INSTALLDIR)/plugins/bkgrnd2d.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) -Ilibs -Iinclude
|
$(INSTALLDIR)/plugins/bkgrnd2d.$(DLL): CPPFLAGS_EXTRA := $(CPPFLAGS_GLIB) $(CPPFLAGS_GTK) -Ilibs -Iinclude
|
||||||
#$(INSTALLDIR)/plugins/bkgrnd2d.$(DLL): \
|
$(INSTALLDIR)/plugins/bkgrnd2d.$(DLL): \
|
||||||
# contrib/bkgrnd2d/bkgrnd2d.o \
|
contrib/bkgrnd2d/bkgrnd2d.o \
|
||||||
# contrib/bkgrnd2d/dialog.o \
|
contrib/bkgrnd2d/dialog.o \
|
||||||
# contrib/bkgrnd2d/plugin.o \
|
contrib/bkgrnd2d/plugin.o \
|
||||||
|
|
||||||
$(INSTALLDIR)/heretic2/h2data.$(EXE): LIBS_EXTRA := $(LIBS_XML)
|
$(INSTALLDIR)/heretic2/h2data.$(EXE): LIBS_EXTRA := $(LIBS_XML)
|
||||||
$(INSTALLDIR)/heretic2/h2data.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/qdata_heretic2/common -Itools/quake2/qdata_heretic2/qcommon -Itools/quake2/qdata_heretic2 -Itools/quake2/common -Ilibs -Iinclude
|
$(INSTALLDIR)/heretic2/h2data.$(EXE): CPPFLAGS_EXTRA := $(CPPFLAGS_XML) -Itools/quake2/qdata_heretic2/common -Itools/quake2/qdata_heretic2/qcommon -Itools/quake2/qdata_heretic2 -Itools/quake2/common -Ilibs -Iinclude
|
||||||
|
|
@ -978,7 +980,7 @@ install-dll: binaries
|
||||||
else
|
else
|
||||||
ifeq ($(OS),Darwin)
|
ifeq ($(OS),Darwin)
|
||||||
install-dll: binaries
|
install-dll: binaries
|
||||||
CP="$(CP)" OTOOL="$(OTOOL)" INSTALLDIR="$(INSTALLDIR)" $(SH) install-dylibs.sh
|
EXE="$(EXE)" MACLIBDIR="$(MACLIBDIR)" CP="$(CP)" OTOOL="$(OTOOL)" INSTALLDIR="$(INSTALLDIR)" $(SH) install-dylibs.sh
|
||||||
else
|
else
|
||||||
install-dll: binaries
|
install-dll: binaries
|
||||||
@$(ECHO) No DLL inclusion implemented for this target.
|
@$(ECHO) No DLL inclusion implemented for this target.
|
||||||
|
|
|
||||||
|
|
@ -1 +1,18 @@
|
||||||
# empty Makefile.conf template
|
# empty Makefile.conf template
|
||||||
|
|
||||||
|
## OS X:
|
||||||
|
# BUILD=debug
|
||||||
|
# RADIANT_ABOUTMSG=Custom build
|
||||||
|
# EXE=ub
|
||||||
|
#
|
||||||
|
## MacPorts:
|
||||||
|
# CPPFLAGS=-I/opt/local/include/ -I/usr/X11R6/include/
|
||||||
|
# LDFLAGS=-L/opt/local/lib -L/usr/X11R6/lib
|
||||||
|
# MACLIBDIR=/opt/local/lib
|
||||||
|
|
||||||
|
## Fink
|
||||||
|
## (-arch ppc can combined with -arch 386, I read somewhere. However does work fine like this on OSX 10.6)
|
||||||
|
# LDFLAGS=-arch i386
|
||||||
|
# CFLAGS=-arch i386
|
||||||
|
# TARGET_ARCH=-arch i386
|
||||||
|
# MACLIBDIR=/sw/lib
|
||||||
|
|
|
||||||
|
|
@ -307,29 +307,31 @@ DPatch* DPatch::MergePatches(patch_merge_t merge_info, DPatch *p1, DPatch *p2)
|
||||||
if(merge_info.pos2 < 0)
|
if(merge_info.pos2 < 0)
|
||||||
merge_info.pos2 += 3;
|
merge_info.pos2 += 3;
|
||||||
}
|
}
|
||||||
|
//
|
||||||
int newHeight = p1->height + p2->height - 1;
|
/* The Patch will never be reaching max, previous comparissions make sure,
|
||||||
|
for 2 patches with 3x3 size. Results always in a patch of 3x5. (31 is max currently)
|
||||||
|
int newHeight = p1->height + p2->height - 1; anyway = 5
|
||||||
if(newHeight > MAX_PATCH_HEIGHT)
|
if(newHeight > MAX_PATCH_HEIGHT)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
int newWidth = p1->width + p2->width - 1;
|
||||||
|
if(newWidth > MAX_PATCH_WIDTH)
|
||||||
|
return NULL;
|
||||||
|
*/
|
||||||
DPatch* newPatch = new DPatch();
|
DPatch* newPatch = new DPatch();
|
||||||
|
|
||||||
newPatch->height = newHeight;
|
newPatch->height = 3;
|
||||||
newPatch->width = p1->width;
|
newPatch->width = 5;
|
||||||
newPatch->SetTexture(p1->texture);
|
newPatch->SetTexture(p1->texture);
|
||||||
|
|
||||||
int y = 0;
|
for(int y = 0; y < 3; y++)
|
||||||
int i;
|
for(int x = 0; x < 3; x++)
|
||||||
for(i = 0; i < p1->height; i++, y++)
|
newPatch->points[x][y] = p1->points[x][y];
|
||||||
for(int x = 0; x < p1->width; x++)
|
|
||||||
newPatch->points[x][y] = p1->points[x][i];
|
|
||||||
|
|
||||||
for(i = 1; i < p2->height; i++, y++)
|
for(int y = 1; y < 3; y++)
|
||||||
for(int x = 0; x < p2->width; x++)
|
for(int x = 0; x < 3; x++)
|
||||||
newPatch->points[x][y] = p2->points[x][i];
|
newPatch->points[x][y+2] = p2->points[x][y];
|
||||||
|
|
||||||
// newPatch->Invert();
|
// newPatch->Invert();
|
||||||
|
|
||||||
return newPatch;
|
return newPatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -396,13 +398,13 @@ void DPatch::Transpose()
|
||||||
Invert();
|
Invert();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::list<DPatch> DPatch::Split(bool rows, bool cols)
|
std::list<DPatch> DPatch::SplitRows()
|
||||||
{
|
{
|
||||||
std::list<DPatch> patchList;
|
std::list<DPatch> patchList;
|
||||||
int i;
|
int i;
|
||||||
int x, y;
|
int x, y;
|
||||||
|
|
||||||
if(rows && height >= 5)
|
if(height >= 5)
|
||||||
{
|
{
|
||||||
for(i = 0; i < (height-1)/2; i++)
|
for(i = 0; i < (height-1)/2; i++)
|
||||||
{
|
{
|
||||||
|
|
@ -411,53 +413,162 @@ std::list<DPatch> DPatch::Split(bool rows, bool cols)
|
||||||
p.width = width;
|
p.width = width;
|
||||||
p.height = 3;
|
p.height = 3;
|
||||||
p.SetTexture(texture);
|
p.SetTexture(texture);
|
||||||
|
for(x = 0; x < 3; x++)
|
||||||
for(y = 0; y < 3; y++)
|
|
||||||
{
|
{
|
||||||
for(x = 0; x < p.width; x++)
|
for(y = 0; y < p.width; y++)
|
||||||
|
{
|
||||||
|
p.points[x][y] = points[(i*2)+x][y];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
patchList.push_back(p);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//This returns exactly what comes in.. I don't know better :/
|
||||||
|
//If nothing is returned, the Patch in Radiant is just deleted - I suppose for evil follow up erros.
|
||||||
|
DPatch p;
|
||||||
|
|
||||||
|
p.height = height;
|
||||||
|
p.width = width;
|
||||||
|
p.SetTexture(texture);
|
||||||
|
|
||||||
|
for(x = 0; x < p.height; x++)
|
||||||
|
{
|
||||||
|
for(y = 0; y < p.width; y++)
|
||||||
|
{
|
||||||
|
p.points[x][y] = points[x][y];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
patchList.push_back(p);
|
||||||
|
}
|
||||||
|
return patchList;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::list<DPatch> DPatch::SplitCols()
|
||||||
|
{
|
||||||
|
std::list<DPatch> patchList;
|
||||||
|
int i;
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
if(width >= 5)
|
||||||
|
{
|
||||||
|
for(i = 0; i < (width-1)/2; i++)
|
||||||
|
{
|
||||||
|
DPatch p;
|
||||||
|
|
||||||
|
p.width = 3;
|
||||||
|
p.height = height;
|
||||||
|
p.SetTexture(texture);
|
||||||
|
|
||||||
|
for(x = 0; x < p.height; x++)
|
||||||
|
{
|
||||||
|
for(y = 0; y < 3; y++)
|
||||||
{
|
{
|
||||||
p.points[x][y] = points[x][(i*2)+y];
|
p.points[x][y] = points[x][(i*2)+y];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
patchList.push_back(p);
|
patchList.push_back(p);
|
||||||
}
|
}
|
||||||
|
} else
|
||||||
if(cols && width >= 5)
|
|
||||||
{
|
{
|
||||||
std::list<DPatch> patchList2;
|
//This returns exactly what comes in.. I don't know better :/
|
||||||
|
//If nothing is returned, the Patch in Radiant is just deleted - I suppose for evil follow up erros.
|
||||||
|
DPatch p;
|
||||||
|
|
||||||
for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++)
|
p.height = height;
|
||||||
|
p.width = width;
|
||||||
|
p.SetTexture(texture);
|
||||||
|
|
||||||
|
for(x = 0; x < p.height; x++)
|
||||||
{
|
{
|
||||||
std::list<DPatch> patchList3 = (*patches).Split(false, true);
|
for(y = 0; y < p.width; y++)
|
||||||
|
{
|
||||||
for(std::list<DPatch>::iterator patches2 = patchList3.begin(); patches2 != patchList3.end(); patches2++)
|
p.points[x][y] = points[x][y];
|
||||||
patchList2.push_front(*patches2);
|
}
|
||||||
|
}
|
||||||
|
patchList.push_back(p);
|
||||||
|
}
|
||||||
|
return patchList;
|
||||||
}
|
}
|
||||||
|
|
||||||
return patchList2;
|
std::list<DPatch> DPatch::Split()
|
||||||
}
|
{
|
||||||
}
|
std::list<DPatch> patchList;
|
||||||
else if(cols && width >= 5)
|
int i;
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
if(width >= 5)
|
||||||
{
|
{
|
||||||
for(i = 0; i < (width-1)/2; i++)
|
for(i = 0; i < (width-1)/2; i++)
|
||||||
{
|
{
|
||||||
DPatch p;
|
DPatch p;
|
||||||
|
|
||||||
p.height = height;
|
|
||||||
p.width = 3;
|
p.width = 3;
|
||||||
|
p.height = height;
|
||||||
p.SetTexture(texture);
|
p.SetTexture(texture);
|
||||||
|
|
||||||
|
for(x = 0; x < p.height; x++)
|
||||||
|
{
|
||||||
|
for(y = 0; y < 3; y++)
|
||||||
|
{
|
||||||
|
p.points[x][y] = points[x][(i*2)+y];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
patchList.push_back(p);
|
||||||
|
}
|
||||||
|
std::list<DPatch> patchList2;
|
||||||
|
for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++)
|
||||||
|
{
|
||||||
|
std::list<DPatch> patchList3 = (*patches).SplitRows();
|
||||||
|
for(std::list<DPatch>::iterator patches2 = patchList3.begin(); patches2 != patchList3.end(); patches2++)
|
||||||
|
patchList2.push_front(*patches2);
|
||||||
|
}
|
||||||
|
return patchList2;
|
||||||
|
|
||||||
|
} else if(height >= 5)
|
||||||
|
{
|
||||||
|
for(i = 0; i < (height-1)/2; i++)
|
||||||
|
{
|
||||||
|
DPatch p;
|
||||||
|
|
||||||
|
p.width = width;
|
||||||
|
p.height = 3;
|
||||||
|
p.SetTexture(texture);
|
||||||
for(x = 0; x < 3; x++)
|
for(x = 0; x < 3; x++)
|
||||||
{
|
{
|
||||||
for(y = 0; y < p.height; y++)
|
for(y = 0; y < p.width; y++)
|
||||||
{
|
{
|
||||||
p.points[x][y] = points[(i*2)+x][y];
|
p.points[x][y] = points[(i*2)+x][y];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
patchList.push_back(p);
|
patchList.push_back(p);
|
||||||
}
|
}
|
||||||
|
std::list<DPatch> patchList2;
|
||||||
|
for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++)
|
||||||
|
{
|
||||||
|
std::list<DPatch> patchList3 = (*patches).SplitCols();
|
||||||
|
for(std::list<DPatch>::iterator patches2 = patchList3.begin(); patches2 != patchList3.end(); patches2++)
|
||||||
|
patchList2.push_front(*patches2);
|
||||||
}
|
}
|
||||||
|
return patchList2;
|
||||||
|
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
//This returns exactly what comes in.. I don't know better :/
|
||||||
|
//If nothing is returned, the Patch in Radiant is just deleted - I suppose for evil follow up erros.
|
||||||
|
DPatch p;
|
||||||
|
|
||||||
|
p.height = height;
|
||||||
|
p.width = width;
|
||||||
|
p.SetTexture(texture);
|
||||||
|
|
||||||
|
for(x = 0; x < p.height; x++)
|
||||||
|
{
|
||||||
|
for(y = 0; y < p.width; y++)
|
||||||
|
{
|
||||||
|
p.points[x][y] = points[x][y];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
patchList.push_back(p);
|
||||||
|
}
|
||||||
return patchList;
|
return patchList;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,15 +46,17 @@ namespace scene
|
||||||
class Instance;
|
class Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_PATCH_WIDTH 16
|
#define MAX_PATCH_WIDTH 32
|
||||||
#define MAX_PATCH_HEIGHT 16
|
#define MAX_PATCH_HEIGHT 32
|
||||||
#define MIN_PATCH_WIDTH 3
|
#define MIN_PATCH_WIDTH 3
|
||||||
#define MIN_PATCH_HEIGHT 3
|
#define MIN_PATCH_HEIGHT 3
|
||||||
|
|
||||||
class DPatch
|
class DPatch
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::list<DPatch> Split(bool rows, bool cols);
|
std::list<DPatch> SplitRows();
|
||||||
|
std::list<DPatch> SplitCols();
|
||||||
|
std::list<DPatch> Split();
|
||||||
void Transpose();
|
void Transpose();
|
||||||
void Invert();
|
void Invert();
|
||||||
DPatch* MergePatches(patch_merge_t merge_info, DPatch* p1, DPatch* p2);
|
DPatch* MergePatches(patch_merge_t merge_info, DPatch* p1, DPatch* p2);
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ void BobToolz_destroy()
|
||||||
char* PLUGIN_NAME = "bobToolz";
|
char* PLUGIN_NAME = "bobToolz";
|
||||||
|
|
||||||
// commands in the menu
|
// commands in the menu
|
||||||
static char* PLUGIN_COMMANDS = "About...,-,Reset Textures...,PitOMatic,-,Vis Viewer,Brush Cleanup,Polygon Builder,Caulk Selection,-,Tree Planter,Drop Entity,Plot Splines,-,Merge Patches,Split patches,Turn edge";
|
static char* PLUGIN_COMMANDS = "About...,-,Reset Textures...,PitOMatic,-,Vis Viewer,Brush Cleanup,Polygon Builder,Caulk Selection,-,Tree Planter,Drop Entity,Plot Splines,-,Merge Patches,Split patches,Split patches cols,Split patches rows,Turn edge";
|
||||||
|
|
||||||
// globals
|
// globals
|
||||||
GtkWidget *g_pRadiantWnd = NULL;
|
GtkWidget *g_pRadiantWnd = NULL;
|
||||||
|
|
@ -106,6 +106,10 @@ extern "C" void QERPlug_Dispatch (const char *p, vec3_t vMin, vec3_t vMax, bool
|
||||||
DoMergePatches();
|
DoMergePatches();
|
||||||
} else if( string_equal_nocase( p, "split patches" ) ) {
|
} else if( string_equal_nocase( p, "split patches" ) ) {
|
||||||
DoSplitPatch();
|
DoSplitPatch();
|
||||||
|
} else if( string_equal_nocase( p, "split patches rows" ) ) {
|
||||||
|
DoSplitPatchRows();
|
||||||
|
} else if( string_equal_nocase( p, "split patches cols" ) ) {
|
||||||
|
DoSplitPatchCols();
|
||||||
} else if( string_equal_nocase( p, "turn edge" ) ) {
|
} else if( string_equal_nocase( p, "turn edge" ) ) {
|
||||||
DoFlipTerrain();
|
DoFlipTerrain();
|
||||||
} else if( string_equal_nocase(p, "reset textures...") ) {
|
} else if( string_equal_nocase(p, "reset textures...") ) {
|
||||||
|
|
|
||||||
|
|
@ -499,7 +499,65 @@ void DoSplitPatch() {
|
||||||
|
|
||||||
patch.LoadFromPatch(instance);
|
patch.LoadFromPatch(instance);
|
||||||
|
|
||||||
std::list<DPatch> patchList = patch.Split( true, true );
|
std::list<DPatch> patchList = patch.Split();
|
||||||
|
for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++) {
|
||||||
|
(*patches).BuildInRadiant();
|
||||||
|
}
|
||||||
|
|
||||||
|
Path_deleteTop(instance.path());
|
||||||
|
}
|
||||||
|
|
||||||
|
void DoSplitPatchCols() {
|
||||||
|
UndoableCommand undo("bobToolz.splitPatchCols");
|
||||||
|
|
||||||
|
DPatch patch;
|
||||||
|
|
||||||
|
// ensure we have something selected
|
||||||
|
if( GlobalSelectionSystem().countSelected() != 1 )
|
||||||
|
{
|
||||||
|
DoMessageBox("Invalid number of patches selected, choose 1 only", "Error", eMB_OK);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
scene::Instance& instance = GlobalSelectionSystem().ultimateSelected();
|
||||||
|
|
||||||
|
if( !Node_isPatch(instance.path().top()) ) {
|
||||||
|
DoMessageBox("You must select ONLY patches", "Error", eMB_OK);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
patch.LoadFromPatch(instance);
|
||||||
|
|
||||||
|
std::list<DPatch> patchList = patch.SplitCols();
|
||||||
|
for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++) {
|
||||||
|
(*patches).BuildInRadiant();
|
||||||
|
}
|
||||||
|
|
||||||
|
Path_deleteTop(instance.path());
|
||||||
|
}
|
||||||
|
|
||||||
|
void DoSplitPatchRows() {
|
||||||
|
UndoableCommand undo("bobToolz.splitPatchRows");
|
||||||
|
|
||||||
|
DPatch patch;
|
||||||
|
|
||||||
|
// ensure we have something selected
|
||||||
|
if( GlobalSelectionSystem().countSelected() != 1 )
|
||||||
|
{
|
||||||
|
DoMessageBox("Invalid number of patches selected, choose 1 only", "Error", eMB_OK);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
scene::Instance& instance = GlobalSelectionSystem().ultimateSelected();
|
||||||
|
|
||||||
|
if( !Node_isPatch(instance.path().top()) ) {
|
||||||
|
DoMessageBox("You must select ONLY patches", "Error", eMB_OK);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
patch.LoadFromPatch(instance);
|
||||||
|
|
||||||
|
std::list<DPatch> patchList = patch.SplitRows();
|
||||||
for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++) {
|
for(std::list<DPatch>::iterator patches = patchList.begin(); patches != patchList.end(); patches++) {
|
||||||
(*patches).BuildInRadiant();
|
(*patches).BuildInRadiant();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,8 @@ void DoPitBuilder();
|
||||||
void DoCTFColourChanger();
|
void DoCTFColourChanger();
|
||||||
void DoMergePatches();
|
void DoMergePatches();
|
||||||
void DoSplitPatch();
|
void DoSplitPatch();
|
||||||
|
void DoSplitPatchRows();
|
||||||
|
void DoSplitPatchCols();
|
||||||
void DoVisAnalyse();
|
void DoVisAnalyse();
|
||||||
void DoTrainThing();
|
void DoTrainThing();
|
||||||
void DoTrainPathPlot();
|
void DoTrainPathPlot();
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,12 @@ set -ex
|
||||||
: ${OTOOL:=otool}
|
: ${OTOOL:=otool}
|
||||||
: ${CP:=cp}
|
: ${CP:=cp}
|
||||||
: ${INSTALLDIR:=.}
|
: ${INSTALLDIR:=.}
|
||||||
|
: ${EXE:=ppc}
|
||||||
|
: ${MACLIBDIR:=/sw/lib}
|
||||||
|
|
||||||
finkgetdeps()
|
finkgetdeps()
|
||||||
{
|
{
|
||||||
otool -L "$1" | grep /sw/lib | while read -r LIB STUFF; do
|
otool -L "$1" | grep "$MACLIBDIR" | while read -r LIB STUFF; do
|
||||||
[ -z "${LIB##*:}" ] && continue # first line
|
[ -z "${LIB##*:}" ] && continue # first line
|
||||||
[ -f "$INSTALLDIR/${LIB##*/}" ] && continue
|
[ -f "$INSTALLDIR/${LIB##*/}" ] && continue
|
||||||
cp -vL "$LIB" "$INSTALLDIR"
|
cp -vL "$LIB" "$INSTALLDIR"
|
||||||
|
|
@ -16,22 +18,22 @@ finkgetdeps()
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
finkgetdeps "$INSTALLDIR/radiant.ppc"
|
finkgetdeps "$INSTALLDIR/radiant.$EXE"
|
||||||
echo Warning: this only works if only ONE version of gtk-2.0 and pango is installed
|
echo Warning: this only works if only ONE version of gtk-2.0 and pango is installed
|
||||||
|
|
||||||
for LIB in /sw/lib/gtk-2.0/*/loaders/libpixbufloader-bmp.so; do
|
for LIB in "$MACLIBDIR"/gtk-2.0/*/loaders/libpixbufloader-bmp.so; do
|
||||||
LAST=$LIB
|
LAST=$LIB
|
||||||
done
|
done
|
||||||
cp -L "$LAST" "$INSTALLDIR"
|
cp -L "$LAST" "$INSTALLDIR"
|
||||||
finkgetdeps "$LAST"
|
finkgetdeps "$LAST"
|
||||||
|
|
||||||
for LIB in /sw/lib/pango/*/modules/pango-basic-fc.so; do
|
for LIB in "$MACLIBDIR"/pango/*/modules/pango-basic-fc.so; do
|
||||||
LAST=$LIB
|
LAST=$LIB
|
||||||
done
|
done
|
||||||
cp -L "$LAST" "$INSTALLDIR"
|
cp -L "$LAST" "$INSTALLDIR"
|
||||||
finkgetdeps "$LAST"
|
finkgetdeps "$LAST"
|
||||||
|
|
||||||
for LIB in /sw/lib/pango/*/modules/pango-basic-x.so; do
|
for LIB in "$MACLIBDIR"/pango/*/modules/pango-basic-x.so; do
|
||||||
LAST=$LIB
|
LAST=$LIB
|
||||||
done
|
done
|
||||||
cp -L "$LAST" "$INSTALLDIR"
|
cp -L "$LAST" "$INSTALLDIR"
|
||||||
|
|
|
||||||
150
setup/data/osx/NetRadiant.app/Contents/MacOS/install/fonts.conf
Executable file
150
setup/data/osx/NetRadiant.app/Contents/MacOS/install/fonts.conf
Executable file
|
|
@ -0,0 +1,150 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- /etc/fonts/fonts.conf file to configure system font access -->
|
||||||
|
<fontconfig>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
DO NOT EDIT THIS FILE.
|
||||||
|
IT WILL BE REPLACED WHEN FONTCONFIG IS UPDATED.
|
||||||
|
LOCAL CHANGES BELONG IN 'local.conf'.
|
||||||
|
|
||||||
|
The intent of this standard configuration file is to be adequate for
|
||||||
|
most environments. If you have a reasonably normal environment and
|
||||||
|
have found problems with this configuration, they are probably
|
||||||
|
things that others will also want fixed. Please submit any
|
||||||
|
problems to the fontconfig bugzilla system located at fontconfig.org
|
||||||
|
|
||||||
|
Note that the normal 'make install' procedure for fontconfig is to
|
||||||
|
replace any existing fonts.conf file with the new version. Place
|
||||||
|
any local customizations in local.conf which this file references.
|
||||||
|
|
||||||
|
Keith Packard
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Font directory list -->
|
||||||
|
|
||||||
|
<dir>/usr/share/fonts</dir>
|
||||||
|
<dir>/usr/X11/lib/X11/fonts</dir> <dir>/Library/Fonts</dir> <dir>/Network/Library/Fonts</dir> <dir>/System/Library/Fonts</dir> <dir>/opt/local/share/fonts</dir>
|
||||||
|
<dir>~/.fonts</dir>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Accept deprecated 'mono' alias, replacing it with 'monospace'
|
||||||
|
-->
|
||||||
|
<match target="pattern">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>mono</string>
|
||||||
|
</test>
|
||||||
|
<edit name="family" mode="assign">
|
||||||
|
<string>monospace</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
|
||||||
|
-->
|
||||||
|
<match target="pattern">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>sans serif</string>
|
||||||
|
</test>
|
||||||
|
<edit name="family" mode="assign">
|
||||||
|
<string>sans-serif</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Accept deprecated 'sans' alias, replacing it with 'sans-serif'
|
||||||
|
-->
|
||||||
|
<match target="pattern">
|
||||||
|
<test qual="any" name="family">
|
||||||
|
<string>sans</string>
|
||||||
|
</test>
|
||||||
|
<edit name="family" mode="assign">
|
||||||
|
<string>sans-serif</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Load local system customization file
|
||||||
|
-->
|
||||||
|
<include ignore_missing="yes">conf.d</include>
|
||||||
|
|
||||||
|
<!-- Font cache directory list -->
|
||||||
|
|
||||||
|
<cachedir>~/.fontconfig</cachedir>
|
||||||
|
|
||||||
|
<config>
|
||||||
|
<!--
|
||||||
|
These are the default Unicode chars that are expected to be blank
|
||||||
|
in fonts. All other blank chars are assumed to be broken and
|
||||||
|
won't appear in the resulting charsets
|
||||||
|
-->
|
||||||
|
<blank>
|
||||||
|
<int>0x0020</int> <!-- SPACE -->
|
||||||
|
<int>0x00A0</int> <!-- NO-BREAK SPACE -->
|
||||||
|
<int>0x00AD</int> <!-- SOFT HYPHEN -->
|
||||||
|
<int>0x034F</int> <!-- COMBINING GRAPHEME JOINER -->
|
||||||
|
<int>0x0600</int> <!-- ARABIC NUMBER SIGN -->
|
||||||
|
<int>0x0601</int> <!-- ARABIC SIGN SANAH -->
|
||||||
|
<int>0x0602</int> <!-- ARABIC FOOTNOTE MARKER -->
|
||||||
|
<int>0x0603</int> <!-- ARABIC SIGN SAFHA -->
|
||||||
|
<int>0x06DD</int> <!-- ARABIC END OF AYAH -->
|
||||||
|
<int>0x070F</int> <!-- SYRIAC ABBREVIATION MARK -->
|
||||||
|
<int>0x115F</int> <!-- HANGUL CHOSEONG FILLER -->
|
||||||
|
<int>0x1160</int> <!-- HANGUL JUNGSEONG FILLER -->
|
||||||
|
<int>0x1680</int> <!-- OGHAM SPACE MARK -->
|
||||||
|
<int>0x17B4</int> <!-- KHMER VOWEL INHERENT AQ -->
|
||||||
|
<int>0x17B5</int> <!-- KHMER VOWEL INHERENT AA -->
|
||||||
|
<int>0x180E</int> <!-- MONGOLIAN VOWEL SEPARATOR -->
|
||||||
|
<int>0x2000</int> <!-- EN QUAD -->
|
||||||
|
<int>0x2001</int> <!-- EM QUAD -->
|
||||||
|
<int>0x2002</int> <!-- EN SPACE -->
|
||||||
|
<int>0x2003</int> <!-- EM SPACE -->
|
||||||
|
<int>0x2004</int> <!-- THREE-PER-EM SPACE -->
|
||||||
|
<int>0x2005</int> <!-- FOUR-PER-EM SPACE -->
|
||||||
|
<int>0x2006</int> <!-- SIX-PER-EM SPACE -->
|
||||||
|
<int>0x2007</int> <!-- FIGURE SPACE -->
|
||||||
|
<int>0x2008</int> <!-- PUNCTUATION SPACE -->
|
||||||
|
<int>0x2009</int> <!-- THIN SPACE -->
|
||||||
|
<int>0x200A</int> <!-- HAIR SPACE -->
|
||||||
|
<int>0x200B</int> <!-- ZERO WIDTH SPACE -->
|
||||||
|
<int>0x200C</int> <!-- ZERO WIDTH NON-JOINER -->
|
||||||
|
<int>0x200D</int> <!-- ZERO WIDTH JOINER -->
|
||||||
|
<int>0x200E</int> <!-- LEFT-TO-RIGHT MARK -->
|
||||||
|
<int>0x200F</int> <!-- RIGHT-TO-LEFT MARK -->
|
||||||
|
<int>0x2028</int> <!-- LINE SEPARATOR -->
|
||||||
|
<int>0x2029</int> <!-- PARAGRAPH SEPARATOR -->
|
||||||
|
<int>0x202A</int> <!-- LEFT-TO-RIGHT EMBEDDING -->
|
||||||
|
<int>0x202B</int> <!-- RIGHT-TO-LEFT EMBEDDING -->
|
||||||
|
<int>0x202C</int> <!-- POP DIRECTIONAL FORMATTING -->
|
||||||
|
<int>0x202D</int> <!-- LEFT-TO-RIGHT OVERRIDE -->
|
||||||
|
<int>0x202E</int> <!-- RIGHT-TO-LEFT OVERRIDE -->
|
||||||
|
<int>0x202F</int> <!-- NARROW NO-BREAK SPACE -->
|
||||||
|
<int>0x205F</int> <!-- MEDIUM MATHEMATICAL SPACE -->
|
||||||
|
<int>0x2060</int> <!-- WORD JOINER -->
|
||||||
|
<int>0x2061</int> <!-- FUNCTION APPLICATION -->
|
||||||
|
<int>0x2062</int> <!-- INVISIBLE TIMES -->
|
||||||
|
<int>0x2063</int> <!-- INVISIBLE SEPARATOR -->
|
||||||
|
<int>0x206A</int> <!-- INHIBIT SYMMETRIC SWAPPING -->
|
||||||
|
<int>0x206B</int> <!-- ACTIVATE SYMMETRIC SWAPPING -->
|
||||||
|
<int>0x206C</int> <!-- INHIBIT ARABIC FORM SHAPING -->
|
||||||
|
<int>0x206D</int> <!-- ACTIVATE ARABIC FORM SHAPING -->
|
||||||
|
<int>0x206E</int> <!-- NATIONAL DIGIT SHAPES -->
|
||||||
|
<int>0x206F</int> <!-- NOMINAL DIGIT SHAPES -->
|
||||||
|
<int>0x2800</int> <!-- BRAILLE PATTERN BLANK -->
|
||||||
|
<int>0x3000</int> <!-- IDEOGRAPHIC SPACE -->
|
||||||
|
<int>0x3164</int> <!-- HANGUL FILLER -->
|
||||||
|
<int>0xFEFF</int> <!-- ZERO WIDTH NO-BREAK SPACE -->
|
||||||
|
<int>0xFFA0</int> <!-- HALFWIDTH HANGUL FILLER -->
|
||||||
|
<int>0xFFF9</int> <!-- INTERLINEAR ANNOTATION ANCHOR -->
|
||||||
|
<int>0xFFFA</int> <!-- INTERLINEAR ANNOTATION SEPARATOR -->
|
||||||
|
<int>0xFFFB</int> <!-- INTERLINEAR ANNOTATION TERMINATOR -->
|
||||||
|
</blank>
|
||||||
|
<!--
|
||||||
|
Rescan configuration every 30 seconds when FcFontSetList is called
|
||||||
|
-->
|
||||||
|
<rescan>
|
||||||
|
<int>30</int>
|
||||||
|
</rescan>
|
||||||
|
</config>
|
||||||
|
|
||||||
|
</fontconfig>
|
||||||
224
setup/data/osx/NetRadiant.app/Contents/MacOS/install/fonts.dtd
Executable file
224
setup/data/osx/NetRadiant.app/Contents/MacOS/install/fonts.dtd
Executable file
|
|
@ -0,0 +1,224 @@
|
||||||
|
<!-- This is the Document Type Definition for font configuration files -->
|
||||||
|
<!ELEMENT fontconfig (dir |
|
||||||
|
cache |
|
||||||
|
cachedir |
|
||||||
|
include |
|
||||||
|
config |
|
||||||
|
selectfont |
|
||||||
|
match |
|
||||||
|
alias)* >
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Add a directory that provides fonts
|
||||||
|
-->
|
||||||
|
<!ELEMENT dir (#PCDATA)>
|
||||||
|
<!ATTLIST dir xml:space (default|preserve) 'preserve'>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Define the per-user file that holds cache font information.
|
||||||
|
|
||||||
|
If the filename begins with '~', it is replaced with the users
|
||||||
|
home directory path.
|
||||||
|
-->
|
||||||
|
<!ELEMENT cache (#PCDATA)>
|
||||||
|
<!ATTLIST cache xml:space (default|preserve) 'preserve'>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Add a directory that is searched for font cache files.
|
||||||
|
These hold per-directory cache data and are searched in
|
||||||
|
order for each directory. When writing cache files, the first
|
||||||
|
directory which allows the cache file to be created is used.
|
||||||
|
|
||||||
|
A leading '~' in a directory name is replaced with the users
|
||||||
|
home directory path.
|
||||||
|
-->
|
||||||
|
<!ELEMENT cachedir (#PCDATA)>
|
||||||
|
<!ATTLIST cachedir xml:space (default|preserve) 'preserve'>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Reference another configuration file; note that this
|
||||||
|
is another complete font configuration file and not
|
||||||
|
just a file included by the XML parser.
|
||||||
|
|
||||||
|
Set 'ignore_missing' to 'yes' if errors are to be ignored.
|
||||||
|
|
||||||
|
If the filename begins with '~', it is replaced with the users
|
||||||
|
home directory path.
|
||||||
|
-->
|
||||||
|
<!ELEMENT include (#PCDATA)>
|
||||||
|
<!ATTLIST include
|
||||||
|
ignore_missing (no|yes) "no"
|
||||||
|
xml:space (default|preserve) "preserve">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Global library configuration data
|
||||||
|
-->
|
||||||
|
<!ELEMENT config (blank|rescan)*>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Specify the set of Unicode encoding values which
|
||||||
|
represent glyphs that are allowed to contain no
|
||||||
|
data. With this list, fontconfig can examine
|
||||||
|
fonts for broken glyphs and eliminate them from
|
||||||
|
the set of valid Unicode chars. This idea
|
||||||
|
was borrowed from Mozilla
|
||||||
|
-->
|
||||||
|
<!ELEMENT blank (int)*>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Aliases are just a special case for multiple match elements
|
||||||
|
|
||||||
|
They are syntactically equivalent to:
|
||||||
|
|
||||||
|
<match>
|
||||||
|
<test name="family">
|
||||||
|
<string value=[family]/>
|
||||||
|
</test>
|
||||||
|
<edit name="family" mode="prepend">
|
||||||
|
<string value=[prefer]/>
|
||||||
|
...
|
||||||
|
</edit>
|
||||||
|
<edit name="family" mode="append">
|
||||||
|
<string value=[accept]/>
|
||||||
|
...
|
||||||
|
</edit>
|
||||||
|
<edit name="family" mode="append_last">
|
||||||
|
<string value=[default]/>
|
||||||
|
...
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
Periodically rescan the font configuration and
|
||||||
|
directories to synch internal state with filesystem
|
||||||
|
-->
|
||||||
|
<!ELEMENT rescan (int)>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Edit list of available fonts at startup/reload time
|
||||||
|
-->
|
||||||
|
<!ELEMENT selectfont (rejectfont | acceptfont)* >
|
||||||
|
|
||||||
|
<!ELEMENT rejectfont (glob | pattern)*>
|
||||||
|
|
||||||
|
<!ELEMENT acceptfont (glob | pattern)*>
|
||||||
|
|
||||||
|
<!ELEMENT glob (#PCDATA)>
|
||||||
|
|
||||||
|
<!ELEMENT pattern (patelt)*>
|
||||||
|
|
||||||
|
<!ENTITY % constant 'int|double|string|matrix|bool|charset|const'>
|
||||||
|
|
||||||
|
<!ELEMENT patelt (%constant;)*>
|
||||||
|
<!ATTLIST patelt
|
||||||
|
name CDATA #REQUIRED>
|
||||||
|
|
||||||
|
<!ELEMENT alias (family*, prefer?, accept?, default?)>
|
||||||
|
<!ATTLIST alias
|
||||||
|
binding (weak|strong|same) "weak">
|
||||||
|
<!ELEMENT prefer (family)*>
|
||||||
|
<!ELEMENT accept (family)*>
|
||||||
|
<!ELEMENT default (family)*>
|
||||||
|
<!ELEMENT family (#PCDATA)>
|
||||||
|
<!ATTLIST family xml:space (default|preserve) 'preserve'>
|
||||||
|
|
||||||
|
<!ENTITY % expr 'int|double|string|matrix|bool|charset
|
||||||
|
|name|const
|
||||||
|
|or|and|eq|not_eq|less|less_eq|more|more_eq|contains|not_contains
|
||||||
|
|plus|minus|times|divide|not|if|floor|ceil|round|trunc'>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Match and edit patterns.
|
||||||
|
|
||||||
|
If 'target' is 'pattern', execute the match before selecting a font.
|
||||||
|
if 'target' is 'font', execute the match on the result of a font
|
||||||
|
selection.
|
||||||
|
-->
|
||||||
|
<!ELEMENT match (test*, edit*)>
|
||||||
|
<!ATTLIST match
|
||||||
|
target (pattern|font|scan) "pattern">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Match a field in a pattern
|
||||||
|
|
||||||
|
if 'qual' is 'any', then the match succeeds if any value in the field matches.
|
||||||
|
if 'qual' is 'all', then the match succeeds only if all values match.
|
||||||
|
if 'qual' is 'first', then the match succeeds only if the first value matches.
|
||||||
|
if 'qual' is 'not_first', then the match succeeds only if any value other than
|
||||||
|
the first matches.
|
||||||
|
For match elements with target=font, if test 'target' is 'pattern',
|
||||||
|
then the test is applied to the pattern used in matching rather than
|
||||||
|
to the resulting font.
|
||||||
|
|
||||||
|
Match elements with target=scan are applied as fonts are scanned.
|
||||||
|
They edit the pattern generated from the scanned font and affect
|
||||||
|
what the fontconfig database contains.
|
||||||
|
-->
|
||||||
|
<!ELEMENT test (%expr;)*>
|
||||||
|
<!ATTLIST test
|
||||||
|
qual (any|all|first|not_first) "any"
|
||||||
|
name CDATA #REQUIRED
|
||||||
|
target (pattern|font|default) "default"
|
||||||
|
compare (eq|not_eq|less|less_eq|more|more_eq|contains|not_contains) "eq">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Edit a field in a pattern
|
||||||
|
|
||||||
|
The enclosed values are used together to edit the list of values
|
||||||
|
associated with 'name'.
|
||||||
|
|
||||||
|
If 'name' matches one of those used in a test element for this match element:
|
||||||
|
if 'mode' is 'assign', replace the matched value.
|
||||||
|
if 'mode' is 'assign_replace', replace all of the values
|
||||||
|
if 'mode' is 'prepend', insert before the matched value
|
||||||
|
if 'mode' is 'append', insert after the matched value
|
||||||
|
if 'mode' is 'prepend_first', insert before all of the values
|
||||||
|
if 'mode' is 'append_last', insert after all of the values
|
||||||
|
If 'name' doesn't match any of those used in a test element:
|
||||||
|
if 'mode' is 'assign' or 'assign_replace, replace all of the values
|
||||||
|
if 'mode' is 'prepend' or 'prepend_first', insert before all of the values
|
||||||
|
if 'mode' is 'append' or 'append_last', insert after all of the values
|
||||||
|
-->
|
||||||
|
<!ELEMENT edit (%expr;)*>
|
||||||
|
<!ATTLIST edit
|
||||||
|
name CDATA #REQUIRED
|
||||||
|
mode (assign|assign_replace|prepend|append|prepend_first|append_last) "assign"
|
||||||
|
binding (weak|strong|same) "weak">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Elements of expressions follow
|
||||||
|
-->
|
||||||
|
<!ELEMENT int (#PCDATA)>
|
||||||
|
<!ATTLIST int xml:space (default|preserve) 'preserve'>
|
||||||
|
<!ELEMENT double (#PCDATA)>
|
||||||
|
<!ATTLIST double xml:space (default|preserve) 'preserve'>
|
||||||
|
<!ELEMENT string (#PCDATA)>
|
||||||
|
<!ATTLIST string xml:space (default|preserve) 'preserve'>
|
||||||
|
<!ELEMENT matrix (double,double,double,double)>
|
||||||
|
<!ELEMENT bool (#PCDATA)>
|
||||||
|
<!ELEMENT charset (#PCDATA)>
|
||||||
|
<!ATTLIST charset xml:space (default|preserve) 'preserve'>
|
||||||
|
<!ELEMENT name (#PCDATA)>
|
||||||
|
<!ATTLIST name xml:space (default|preserve) 'preserve'>
|
||||||
|
<!ELEMENT const (#PCDATA)>
|
||||||
|
<!ATTLIST const xml:space (default|preserve) 'preserve'>
|
||||||
|
<!ELEMENT or (%expr;)*>
|
||||||
|
<!ELEMENT and (%expr;)*>
|
||||||
|
<!ELEMENT eq ((%expr;), (%expr;))>
|
||||||
|
<!ELEMENT not_eq ((%expr;), (%expr;))>
|
||||||
|
<!ELEMENT less ((%expr;), (%expr;))>
|
||||||
|
<!ELEMENT less_eq ((%expr;), (%expr;))>
|
||||||
|
<!ELEMENT more ((%expr;), (%expr;))>
|
||||||
|
<!ELEMENT more_eq ((%expr;), (%expr;))>
|
||||||
|
<!ELEMENT contains ((%expr;), (%expr;))>
|
||||||
|
<!ELEMENT not_contains ((%expr;), (%expr;))>
|
||||||
|
<!ELEMENT plus (%expr;)*>
|
||||||
|
<!ELEMENT minus (%expr;)*>
|
||||||
|
<!ELEMENT times (%expr;)*>
|
||||||
|
<!ELEMENT divide (%expr;)*>
|
||||||
|
<!ELEMENT not (%expr;)>
|
||||||
|
<!ELEMENT if ((%expr;), (%expr;), (%expr;))>
|
||||||
|
<!ELEMENT floor (%expr;)>
|
||||||
|
<!ELEMENT ceil (%expr;)>
|
||||||
|
<!ELEMENT round (%expr;)>
|
||||||
|
<!ELEMENT trunc (%expr;)>
|
||||||
|
|
@ -7,10 +7,11 @@ MY_DIRECTORY="${MY_DIRECTORY%/*}" # cut off Contents
|
||||||
export DYLD_LIBRARY_PATH="$MY_DIRECTORY/Contents/MacOS/install"
|
export DYLD_LIBRARY_PATH="$MY_DIRECTORY/Contents/MacOS/install"
|
||||||
export PANGO_RC_FILE="$MY_DIRECTORY/Contents/MacOS/install/pangorc"
|
export PANGO_RC_FILE="$MY_DIRECTORY/Contents/MacOS/install/pangorc"
|
||||||
export GDK_PIXBUF_MODULE_FILE="$MY_DIRECTORY/Contents/MacOS/install/gdk-pixbuf.loaders"
|
export GDK_PIXBUF_MODULE_FILE="$MY_DIRECTORY/Contents/MacOS/install/gdk-pixbuf.loaders"
|
||||||
|
export FONTCONFIG_FILE="$MY_DIRECTORY/Contents/MacOS/install/fonts.conf"
|
||||||
|
|
||||||
cd "$MY_DIRECTORY/Contents/MacOS/install"
|
cd "$MY_DIRECTORY/Contents/MacOS/install"
|
||||||
if [ -x /usr/bin/open-x11 ]; then
|
if [ -x /usr/bin/open-x11 ]; then
|
||||||
/usr/bin/open-x11 ./radiant.ppc "$@" &
|
/usr/bin/open-x11 ./radiant.%EXE% "$@" &
|
||||||
else
|
else
|
||||||
./radiant.ppc "$@" &
|
./radiant.%EXE% "$@" &
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user