"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
"{ Package: 'stx:libview' }"
"{ NameSpace: Smalltalk }"
LibraryDefinition subclass:#stx_libview
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'* Projects & Packages *'
!
!stx_libview class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 2006 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
!
documentation
"
Package Documentation
This library contains low level interfaces to the underlying graphic system
and representations of windows, fonts, colors, bitmaps etc.
It does not contain medium level widget classes or applications/tools,
but instead provides a device- and operating system independent layer on top of which
GUI frameworks can be built.
It currently supports X11 and Windows-API.
Native OSX support may be an option if there is sufficient demand for it
(i.e. someone is willing to pay for its development).
"
! !
!stx_libview class methodsFor:'accessing - hg - settings'!
hgEnsureCopyrightMethod
"If true, then #copyright method is automatically compiled in each class
(but iff project definition defines it)
Default is true (compile such method) but if the repository is mirror of CVS and
you want to merge back to CVS at some point, you may want to not compile them
to keep changes against CVS minimal"
^false
"Created: / 09-10-2013 / 15:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
hgEnsureVersion_HGMethod
"If true, then #version_HG method is automatically compiled in each class.
Default is true (compile such method) but if the repository is mirror of CVS and
you want to merge back to CVS at some point, you may want to not compile them
to keep changes against CVS minimal.
If false, version_HG is compiled only in classes that has been modified
and commited.
Note that Mercurial can live without them
just fine"
^false
"Created: / 09-10-2013 / 15:39:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
hgRemoveContainesForDeletedClasses
"If true, then containers for removed classes are __AUTOMATICALLY__ removed from the
repositoru. If false, obsolete containes are kept.
Default is true (remove obsolete containers) but if the repository is mirror of CVS and
you want to merge back to CVS at some point, you may want to return false to avoid deletions
of obsolete files. Usefull when branching off an old CVS repo with loads of mess."
^false
"Created: / 09-10-2013 / 15:39:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!stx_libview class methodsFor:'description'!
excludedFromPreRequisites
^ #(
#'stx:libcompat' "OrderedDither - referenced by Image>>convertToPalette:renderedBy: "
#'stx:libtool' "GenericToolbarIconLibrary - referenced by SimpleView class>>readStyleSheet "
#'stx:libtool2' "ImageEditor - referenced by Image>>edit "
#'stx:libui' "ViewSpec - referenced by SimpleView>>specClass "
#'stx:libview2' "TIFFReader - referenced by Image>>saveOn: "
#'stx:libwidg' "Button - referenced by ModalBox>>initialize "
#'stx:libwidg2' "ImageView - referenced by Form>>show "
#'stx:goodies/communication' "HTTPInterface - referenced by ImageReader class>>fromURL: "
)
!
mandatoryPreRequisites
"list packages which are mandatory as a prerequisite.
This are packages containing superclasses of my classes and classes which
are extended by myself.
They are mandatory, because we need these packages as a prerequisite for loading and compiling.
This method is generated automatically,
by searching along the inheritance chain of all of my classes."
^ #(
#'stx:libbasic' "Collection - superclass of ColorPalette"
)
!
referencedPreRequisites
"list packages which are a prerequisite, because they contain
classes which are referenced by my classes.
We do not need these packages as a prerequisite for compiling or loading,
however, a class from it may be referenced during execution and having it
unloaded then may lead to a runtime doesNotUnderstand error, unless the caller
includes explicit checks for the package being present.
This method is generated automatically,
by searching all classes (and their packages) which are referenced by my classes."
^ #(
#'stx:libbasic2' "BooleanArray - referenced by Image>>floodFillAt:withValue:"
)
!
subProjects
"list packages which are known as subprojects.
The generated makefile will enter those and make there as well.
However: they are not forced to be loaded when a package is loaded;
for those, redefine requiredPrerequisites"
^ #(
)
! !
!stx_libview class methodsFor:'description - compilation'!
additionalBaseAddressDefinition_bc_dot_mak
"this is an optional definition, which (if present) may speed up the dll-loading a little
on win32 systems."
^ '
# see stdHeader_bc for LIBVIEW_BASE
LIB_BASE=$(LIBVIEW_BASE)
'
!
additionalDefinitions_bc_dot_mak
^ '
!!ifdef USEBC
X11_LIBS=..\libbc\X11OMF.lib ..\libbc\XextOMF.lib
!!else
!! ifdef USEVC
# X11_LIBS=..\libvc\X11.lib ..\libvc\Xext.lib
!! else
!! endif
!!endif
'
"Modified: / 27-09-2011 / 18:25:27 / cg"
!
additionalDefinitions_make_dot_proto
^ '
LOCAL_SHARED_LIBS=-L$(X_LIB_DIR) $(LIB_XEXT) $(LIB_XINERAMA) $(LIB_XFT) $(LIB_X) $(LIBRUN_LINK_LIB)
'
!
additionalRules_bc_dot_mak
^ '#
..\libbc\X11OMF.lib: ..\support\win32\borland\X11OMF.lib
copy ..\support\win32\borland\X11OMF.lib ..\libbc
..\libbc\XextOMF.lib: ..\support\win32\borland\XextOMF.lib
copy ..\support\win32\borland\XextOMF.lib ..\libbc
..\libvc\X11.lib: ..\support\win32\msc\X11.lib
copy ..\support\win32\msc\X11.lib ..\libvc
..\libvc\Xext.lib: ..\support\win32\msc\Xext.lib
copy ..\support\win32\msc\Xext.lib ..\libvc
'
"Modified: / 27-09-2011 / 18:10:19 / cg"
!
additionalRules_make_dot_proto
^ '
postMake:: $(LIBVIEW_EXTRA_TARGETS)
clean::
@-mv $(OUTDIR)XWorkstation.o $(OUTDIR)XWorkstation.o.sav
@-mv $(OUTDIR)GLXWorkstation.o $(OUTDIR)GLXWorkstation.o.sav
@-rm -f [A-Z]*.o *.s *.s2 *.c *.H
@-mv $(OUTDIR)XWorkstation.o.sav $(OUTDIR)XWorkstation.o
@-mv $(OUTDIR)GLXWorkstation.o.sav $(OUTDIR)GLXWorkstation.o
@-touch $(OUTDIR)XWorkstation.st $(OUTDIR)GLXWorkstation.st
#
# XWorkstatation and GLXWorkstatation are separate (shared) Objects - compile without sepInitCode
# and without -Zlibview (to speedup ld.so on SGI, by avoiding conflicts)
#
XWorkstation.$(O): XWorkstation.st $(INCLUDE_TOP)/stx/libview/DeviceWorkstation.H $(INCLUDE_TOP)/stx/libview/HostGraphicsDevice.H $(INCLUDE_TOP)/stx/libview/GraphicsDevice.H
$(MAKE) $(BIG_STFILE_RULE) BIG_FILE=XWorkstation \
CC="$(CC)" OPT="$(OPT)" \
CLASSLIB_CC="$(CLASSLIB_CC)" \
CLASSLIB_OPT="$(CLASSLIB_OPT) -primitiveStackSize=64000" \
SEPINITCODE=-sepInitCode ZFLAG=
xw:
$(MAKE) XWorkstation.c \
CC="$(CC)" OPT="$(OPT)" \
CLASSLIB_CC="$(CLASSLIB_CC)" \
CLASSLIB_OPT="$(CLASSLIB_OPT) -primitiveStackSize: 64000 -V" \
SEPINITCODE=-sepInitCode ZFLAG=
XWorkstation.$(SO): XWorkstation.$(O)
$(MAKE) $(SHAREDLIBRULE) \
LIB=XWorkstation.$(SO) \
OBJS="XWorkstation.$(O)" \
LOCAL_SHARED_LIBS="-L$(X_LIB_DIR) $(LIB_XEXT) $(LIB_XINERAMA) $(LIB_XFT) $(LIB_X) $(LIBRUN_LINK_LIB) "
# LOCAL_SHARED_LIBS="-L$(TOP)/librun -lrun -L$(X_LIB_DIR) $(LIB_XEXT) $(LIB_XINERAMA) $(LIB_X) "
__GLXWorkstation.$(O): GLXWorkstation.st $(INCLUDE_TOP)/stx/libview/XWorkstation.$(O) $(INCLUDE_TOP)/stx/libview/DeviceWorkstation.H $(INCLUDE_TOP)/stx/libview/HostGraphicsDevice.H $(INCLUDE_TOP)/stx/libview/GraphicsDevice.H $(INCLUDE)/stc.h
$(MAKE) $(BIG_STFILE_RULE) BIG_FILE=GLXWorkstation \
CC="$(CC)" OPT="$(OPT)" \
CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)" \
SEPINITCODE=-sepInitCode ZFLAG=
mv GLXWorkstation.$(O) __GLXWorkstation.$(O)
GLXWorkstation.$(O): glLib __GLXWorkstation.$(O)
@if [ "$(NO_PRELINK_LIBGL)" = "" ]; \
then\
echo $(CLASSLIB_LD) $(LD_REL_FLAG) -o GLXWorkstation.$(O) __GLXWorkstation.$(O) $(LIB_GL); \
$(CLASSLIB_LD) $(LD_REL_FLAG) -o GLXWorkstation.$(O) __GLXWorkstation.$(O) $(LIB_GL); \
else \
echo cp __GLXWorkstation.$(O) GLXWorkstation.$(O); \
cp __GLXWorkstation.$(O) GLXWorkstation.$(O); \
fi
glLib:
@-if [ -d ../support/VGL ]; then \
(cd ../support/VGL ; $(MAKE) ) ; \
fi
DeviceWorkstation.$(O):
$(MAKE) $(BIG_STFILE_RULE) BIG_FILE=DeviceWorkstation \
CC="$(CC)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" \
CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)"
SimpleView.$(O):
$(MAKE) $(BIG_STFILE_RULE) BIG_FILE=SimpleView \
CC="$(CC)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" \
CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)"
Image.$(O):
$(MAKE) $(BIG_STFILE_RULE) BIG_FILE=Image \
CC="$(CC)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" \
CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)"
#OGLWorkstation.$(O): OGLWorkstation.st
# $(MAKE) $(BIG_STFILE_RULE) BIG_FILE=OGLWorkstation CC=$(CC) OPT="$(OPT)" \
# XDEFS="-DOPENGL -I$(MESA_DIR)/include" SEPINITCODE=-sepInitCode ZFLAG=
# $(CLASSLIB_LD) -r -o ttt.$(O) OGLWorkstation.$(O) \
# $(MESA_DIR)/lib/libMesaGL.a \
# $(MESA_DIR)/lib/libMesaGLU.a \
# $(MESA_DIR)/lib/libMesaaux.a
# mv ttt.$(O) OGLWorkstation.$(O)
OGLWorkstation.$(O): GLXWorkstation.st
cp GLXWorkstation.st OGLWorkstation.st
$(MAKE) $(BIG_STFILE_RULE) BIG_FILE=OGLWorkstation \
CC="$(CC)" OPT="$(OPT)" \
CLASSLIB_CC="$(CLASSLIB_CC)" CLASSLIB_OPT="$(CLASSLIB_OPT)" \
CC_VOGL_FLAGS="$(CC_MESA_INCLUDE) -DOPENGL -DMESA -UVGL -UGLX"\
SEPINITCODE=-sepInitCode ZFLAG=
$(CLASSLIB_LD) -r -o ttt.$(O) OGLWorkstation.$(O) \
$(MESA_DIR)/lib/libMesaGL.a \
$(MESA_DIR)/lib/libMesaGLU.a \
$(MESA_DIR)/lib/libMesaaux.a
mv ttt.$(O) OGLWorkstation.$(O)
rm -f OGLWorkstation.st
#ogl:
# $(MAKE) OGLWorkstation.o XDEFS="-DOPENGL -I$(VOGL_DIR) -DSHAPE" SEPINITCODE=-sepInitCode ZFLAG=
# mv OGLWorkstation.o ttt.o
# $(CLASSLIB_LD) -r -o OGLWorkstation.o ttt.o \
# $(TOP)/support/MESA/Mesa1.2.5/lib/libMesaGL.a \
# $(TOP)/support/MESA/Mesa1.2.5/lib/libMesaGLU.a \
# $(TOP)/support/MESA/Mesa1.2.5/lib/libMesaaux.a \
# /lib/libc.so.4
#
# on my 320H, do not compile DeviceWorkstation with -O2;
# compiler is running out of space ...
#
#AIX_BIGGIES:
# $(MAKE) GraphicsContext.$(O)
# $(MAKE) DeviceGraphicsContext.$(O)
# $(MAKE) OPT= DeviceWorkstation.$(O)
# $(MAKE) OPT= XWorkstation.$(O)
# $(MAKE) OPT= Image.$(O)
# $(MAKE) OPT= SimpleView.$(O)
#
# prelink those - cannot mix non-shared with shared objects (sigh)
#
AIX_SHARED_XWORKSTATION:
$(MAKE) GraphicsDevice.$(O) HostGraphicsDevice.$(O) DeviceWorkstation.$(O)
$(MAKE) aix_exports LIBNAME=XWorkstation ENTRY=XWorkstation
@-echo "__XErrorHandler__" >> XWorkstation.exp
@-echo "__XIOErrorHandler__" >> XWorkstation.exp
$(MAKE) XWorkstation$(O_EXT) \
ENTRY_INIT=XWorkstation \
AIX_LOCAL_LIBS="$(LIBX)"
AIX_SHARED_GLXWORKSTATION:
$(MAKE) GraphicsDevice.$(O) HostGraphicsDevice.$(O) DeviceWorkstation.$(O)
$(MAKE) aix_exports LIBNAME=XWorkstation ENTRY=XWorkstation
@-echo "__XErrorHandler__" >> XWorkstation.exp
@-echo "__XIOErrorHandler__" >> XWorkstation.exp
$(MAKE) GLXWorkstation$(O_EXT) \
ENTRY_INIT=GLXWorkstation \
AIX_LOCAL_LIBS="-bI:XWorkstation.exp $(LIB_GL) $(LIBX) -lm"
rm -f XWorkstation.exp
#
# in (my) aix system, those cannot be compiled with
# the optimizer - running out of space ...
#
AIX:: GraphicsContext.$(O) DeviceGraphicsContext.$(O) GraphicsMedium.$(O) DisplaySurface.$(O)
$(MAKE) OPT="" SimpleView.$(O)
$(MAKE) OPT="" Image.$(O)
$(MAKE) $(AIX_XWORKSTATION_RULE) $(AIX_GLXWORKSTATION_RULE)
#
# on HP, big classes blow the C-preprocessor (stops with "too much defining" error)
#
#HP::
#
#HPbigFiles:
# $(MAKE) $(BIG_STFILE_RULE) BIG_FILE=Color CC=$(CC) OPT="$(OPT)"
# $(MAKE) $(BIG_STFILE_RULE) BIG_FILE=DeviceGraphicsContext CC=$(CC) OPT="$(OPT)"
'
"Modified: / 14-09-2011 / 13:50:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
localDefines_unix
^ '$(XINCLUDE) $(XDEFS) $(CC_3D_FLAGS)'
!
localIncludes
^ '$(OPTIONAL_SUPPORT_XLIB_INCLUDE)'
!
stcOptimizationOptions
^ '+optinline +optinline2'
!
stcWarningOptions
^ '-warnNonStandard -warnUnused'
! !
!stx_libview class methodsFor:'description - contents'!
classNamesAndAttributes
"lists the classes which are to be included in the project.
Each entry in the list may be: a single class-name (symbol),
or an array-literal consisting of class name and attributes.
Attributes are: #autoload or #<os> where os is one of win32, unix,..."
^ #(
"<className> or (<className> attributes...) in load order"
AbstractBackground
AbstractBorder
Color
Colormap
Controller
Cursor
DeviceHandle
DisplayTransform
Event
(FcConstants unix)
FontDescription
(GraphicsAttributes autoload)
GraphicsContext
GraphicsDevice
GraphicsMedium
Image
ImageReader
KeyboardForwarder
KeyboardMap
ResourcePack
WindowGroup
WindowSensor
#'stx_libview'
BeveledBorder
BitmapFont
Border
ColorPalette
CompoundFont
(ControllerWithMenu autoload)
Depth16Image
Depth1Image
Depth24Image
Depth2Image
Depth32Image
Depth48Image
Depth4Image
Depth64Image
Depth8Image
DeviceGraphicsContext
DisplaySurface
(FcPattern unix)
Font
Form
GradientBackground
HostGraphicsDevice
ImageBackground
MacButtonBorder
NoBackground
(RoundButtonBorder autoload)
ScaleTransform
SimpleBorder
SolidBackground
SynchronousWindowSensor
(TranslucentColor autoload)
ViewStyle
WindowEvent
(XftFontDescription unix)
(AlphaMask autoload)
DeviceWorkstation
DisplayRootView
FixedPalette
ImageMask
MacFlatButtonBorder
MappedPalette
RoundedBorder
SimpleView
WidgetEvent
WindowingTransformation
XGraphicsContext
FixedPaletteWithAlpha
MonoMappedPalette
(NeXTWorkstation autoload)
ShadowView
View
(XEmbedContainerView unix)
(XWorkstation unix)
(GLXWorkstation unix)
TopView
(MDIChildView autoload)
PopUpView
StandardSystemView
ModalBox
(WinWorkstation win32)
)
!
extensionMethodNames
"list class/selector pairs of extensions.
A correponding method with real names must be present in my concrete subclasses"
^ #(
'ConfigurableFeatures class' hasFontConfig
'ConfigurableFeatures class' hasXFT
)
! !
!stx_libview class methodsFor:'description - project information'!
companyName
"Return a companyname which will appear in <lib>.rc"
^ 'eXept Software AG'
!
description
"Return a description string which will appear in nt.def / bc.def"
^ 'Smalltalk/X Low Level Graphic Interfacing'
"Modified: / 14-09-2006 / 10:54:54 / cg"
!
legalCopyright
"Return a copyright string which will appear in <lib>.rc"
^ 'Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 2012'
"Modified: / 18-07-2012 / 19:12:02 / cg"
!
productName
"Return a product name which will appear in <lib>.rc"
^ 'Smalltalk/X'
! !
!stx_libview class methodsFor:'documentation'!
version
^ '$Header$'
!
version_CVS
^ '$Header$'
!
version_HG
^ '$Changeset: <not expanded> $'
! !