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 )