Acme-MITHALDU-BleedingOpenGL
view release on metacpan or search on metacpan
BleedingOpenGL.pm view on Meta::CPAN
Button1Mask
Button2Mask
Button3Mask
Button4Mask
Button5Mask
AnyModifier
Button1
Button2
Button3
Button4
Button5
NotifyNormal
NotifyGrab
NotifyUngrab
NotifyWhileGrabbed
NotifyHint
NotifyAncestor
NotifyVirtual
NotifyInferior
NotifyNonlinear
NotifyNonlinearVirtual
NotifyPointer
NotifyPointerRoot
NotifyDetailNone
VisibilityUnobscured
VisibilityPartiallyObscured
VisibilityFullyObscured
PlaceOnTop
PlaceOnBottom
FamilyInternet
FamilyDECnet
FamilyChaos
PropertyNewValue
PropertyDelete
ColormapUninstalled
ColormapInstalled
GrabModeSync
GrabModeAsync
GrabSuccess
AlreadyGrabbed
GrabInvalidTime
GrabNotViewable
GrabFrozen
AsyncPointer
SyncPointer
ReplayPointer
AsyncKeyboard
SyncKeyboard
ReplayKeyboard
AsyncBoth
SyncBoth
StaticGray
GrayScale
StaticColor
PseudoColor
TrueColor
DirectColor
);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
@oldfunctions = qw(
glpOpenWindow
glpMainLoop
glpMoveResizeWindow
glpMoveWindow
glpResizeWindow
glpDisplay
glXSwapBuffers
XPending
glpXNextEvent
glpXQueryPointer
glpFlush
glpSolidSphere
glpReadTex
glpClipPlane
glpGetClipPlane
glpLoadMatrixf glpLoadMatrixd glpMultMatrixf glpMultMatrixd
gluOrtho2D
gluPerspective
gluLookAt
glAccum
glAlphaFunc
glBegin
glBitmap
glBlendColorEXT
glBlendEquationEXT
glBlendFunc
glCallList
glCallLists
glClear
glClearAccum
glClearColor
glClearDepth
glClearIndex
glClearStencil
glClipPlane
glColor3b
glColor3bv
glColor3d
glColor3dv
glColor3f
glColor3fv
glColor3i
glColor3iv
glColor3s
glColor3sv
glColor3ub
glColor3ubv
glColor3ui
glColor3uiv
glColor3us
glColor3usv
glColor4b
glColor4bv
BleedingOpenGL.pm view on Meta::CPAN
glVertex2fv
glVertex2iv
glVertex2sv
glVertex3dv
glVertex3fv
glVertex3iv
glVertex3sv
glVertex4dv
glVertex4fv
glVertex4iv
glVertex4sv
glViewport
);
sub AUTOLOAD {
# This AUTOLOAD is used to 'autoload' constants from the constant()
# XS function. If a constant is not found then control is passed
# to the AUTOLOAD in AutoLoader.
# NOTE: THIS AUTOLOAD FUNCTION IS FLAWED (but is the best we can do for now).
# Avoid old-style ``&CONST'' usage. Either remove the ``&'' or add ``()''.
if (@_ > 0) {
# Is it an old OpenGL-0.4 function? If so, remap it to newer variant
local($constname);
($constname = $AUTOLOAD) =~ s/.*:://;
if (grep ($_ eq $constname, @rename_old)) {
eval "sub $AUTOLOAD { $AUTOLOAD" . "_s(\@_) }";
goto &$AUTOLOAD;
}
$AutoLoader::AUTOLOAD = $AUTOLOAD;
goto &AutoLoader::AUTOLOAD;
}
local($constname);
($constname = $AUTOLOAD) =~ s/.*:://;
$val = constant($constname, @_ ? $_[0] : 0);
if (not defined $val) {
if ($! =~ /Invalid/) {
$AutoLoader::AUTOLOAD = $AUTOLOAD;
goto &AutoLoader::AUTOLOAD;
}
else {
($pack,$file,$line) = caller;
die "Your vendor has not defined OpenGL macro $constname, used at $file line $line.
";
}
}
eval "sub $AUTOLOAD { $val }";
goto &$AUTOLOAD;
}
bootstrap Acme::MITHALDU::BleedingOpenGL;
*OpenGL::Array::CLONE_SKIP = sub { 1 }; # OpenGL::Array is not thread safe
*OpenGL::Matrix::CLONE_SKIP = sub { 1 }; # OpenGL::Matrix is not thread safe
# The following material is directly copied from Stan Melax's original OpenGL-0.4
# (with modifications for OS/2).
%window_defaults=(
'x' => 0,
'y' => 0,
'width' => 500,
'height' => 500,
'parent' => 0,
'steal' => 0,
'mask' => (_have_glx() ? StructureNotifyMask() : 0),
'attributes'=> [],
);
sub glpOpenWindow {
# default values
my(%a) = @_;
my(%p) = %window_defaults;
foreach $k (keys(%a)){
exists($p{$k}) || warn "Not a valid parameter to glpOpenWindow: `$k'\n";
#print "parameter $k now ",$a{$k}," was ",$p{$k},"\n";
$p{$k} = $a{$k};
}
#
# glpcOpenWindow() no longer exported. Use fully qualified
# package name or (better!) glpOpenWindow()
#
glpcOpenWindow($p{'x'},$p{'y'},$p{'width'},$p{'height'},
$p{'parent'},$p{'mask'},$p{'steal'},
@{$p{'attributes'}});
}
# The following material is original to OpenGL-0.5, and provides compatibility
# with some of Stan's functions.
sub glpClipPlane { glClipPlane_p(@_) }
sub glpGetClipPlane { glGetClipPlane_p(@_) }
sub glpLoadMatrixd { glLoadMatrixd_p(@_) }
sub glpMultMatrixd { glMultMatrixd_p(@_) }
sub glpLoadMatrixf { glLoadMatrixf_p(@_) }
sub glpMultMatrixf { glMultMatrixf_p(@_) }
sub glpMainLoop {
if (_have_glx()) {
## print "Control-D to quit...\n";
## while(<>){;} # control-D to quit
print "Type <Enter> to quit...\n";
until(<>){;} # control-D to quit
} else { # OS/2 PM
OS2::Process_Messages(0) while 1;
}
}
if (_have_glp() && !_have_glx()) { eval <<EOE } # OS2, take into account %ENV?
sub Button1Mask () {Button1MaskOS2()}
sub Button2Mask () {Button3MaskOS2()}
sub Button3Mask () {Button2MaskOS2()}
EOE
sub glpFlush {
&glFlush;
glXSwapBuffers() if __had_dbuffer_hack();
}
sub Acme::MITHALDU::BleedingOpenGL::Quad::DESTROY ($) {gluDeleteQuadric(shift)}
@Acme::MITHALDU::BleedingOpenGL::Quad::ISA = 'GLUquadricObjPtr';
sub __new_gluQuad () {bless gluNewQuadric(), 'Acme::MITHALDU::BleedingOpenGL::Quad'}
sub glpSolidSphere ($$$) {
gluSphere(__new_gluQuad, shift, shift, shift);
}
unless (_have_glut()) {
*glutSolidSphere = \&glpSolidSphere;
( run in 2.633 seconds using v1.01-cache-2.11-cpan-140bd7fdf52 )