A
download cocoa-media.rb
Language: Ruby
Copyright: (C) 2004-2005 Kouichirou Eto, All rights reserved.
LOC: 114
Project Info
etocom project(etocom)
Server: RubyForge (SVN)
Type: svn
...s\REL‑start_newgem\sgl\sgl\
   cocoa-app.rb
   cocoa-color.rb
   cocoa-draw.rb
   cocoa-event.rb
   cocoa-media.rb
   cocoa-notuse.rb
   cocoa-window.rb
   cocoa.rb
   make-release.rb
   opengl-app.rb
   opengl-color.rb
   opengl-draw.rb
   opengl-event.rb
   opengl-modules.rb
   opengl-window.rb
   opengl.rb
   qp.rb
   sgl-bass.rb
   sgl-button.rb
   sgl-spring.rb
   test-cocoa-app.rb
   test-opengl-app.rb

# Copyright (C) 2004-2005 Kouichirou Eto, All rights reserved.

require "kconv"

module SGL
  def movie(*a)	$__a__.movie(*a);	end
  def image(*a)	$__a__.image(*a);	end
  def font(*a)	$__a__.font(*a);	end
  def sound(*a)	$__a__.sound(*a);	end

  class Application
    def movie(u)
      if /\Ahttp:\/\// =~ u || /\Artsp:\/\// =~ u
	url = OSX::NSURL.URLWithString_(u)
      else
	url = OSX::NSURL.fileURLWithPath_(u)
      end
      mov = OSX::NSMovie.alloc.initWithURL(url, :byReference, true)
      # Place the movie on the out of screen.
      obj = NSMovieView.alloc.initWithFrame([-100.0, -100.0, 10.0, 10.0])
      obj.setApp(self)
      obj.setMovie(mov)
      obj.showController(false, :adjustingSize, false)
      view = @options[:movie] ? @movview : @bgview
      # This "p" is necessary to show the movie.  I don't know why.
      p [@options[:movie], view]
      # p view			# This does not work.
      # dummy = view.inspect	# This does not work also.
      view.addSubview(obj)
      obj
    end

    def image(file)
      img = NSImage.alloc.initWithContentsOfFile(file)
      img.setApp(self)
      img
    end

    def font(*a)
      NSFont.new(self, *a)
    end

    def sound(file)
      url = OSX::NSURL.fileURLWithPath_(file)
      snd = NSSound.alloc.initWithContentsOfURL(url, :byReference, true)
      snd
    end
  end

  class NSMovieView < OSX::NSMovieView
    include FrameTranslator

    def setApp(app)
      @app = app
      @playing = false
    end

    def rect(a,b,c,d)
      frame(*to_xywh(a, b, c, d))
     #frame(*@app.to_xywh(a, b, c, d))
    end

    def frame(a,b,c,d)
      setFrame([a, b, c, d])
    end

    def play
      return if @playing
      @playing = true
      start_
    end

    def stop
      return if ! @playing
      @playing = false
      stop_
    end

    def goBegin()	gotoBeginning_;	end
    def goEnd()	gotoEnd_;	end
    def forward()	stepForward_;	end
    def back()	stepBack_;	end
    def loop=(a)	setLoopMode(a);	end
    def rate=(r)	setRate(r/100.0);	end
    def volume=(v)	setVolume(v/100.0);	end
  end

  class NSImage < OSX::NSImage
    include FrameTranslator

    def setApp(app)	@app = app;	end

    def rect(a,b,c,d)
      frame(*to_xywh(a, b, c, d))
    end

    def frame(x,y,w,h)
      drawInRect([x,y,w,h],
		 :fromRect, [0,0,size.width,size.height],
		 :operation, OSX::NSCompositeSourceOver,
		 :fraction, @app.get_cur_color_alpha)
    end
  end

  class NSFont
    def initialize(w, n="Helvetica", s=0.0)
      @app, @name, @size = w, n, s.abs
    end
    attr_accessor :name
    attr_reader :size

    def size=(s)
      @size = s.abs
    end

    def text(x, y, str)
      return unless str.is_a? String
      str = NKF.nkf("-m0 -s", str)
      str = OSX::NSMutableAttributedString.alloc.initWithString(str)
      str.addAttribute(OSX::NSFontAttributeName(),
		       :value, OSX::NSFont.fontWithName(@name, :size, @size),
		       :range, [0,str.length])
      color = @app.make_cur_color
      str.addAttribute(OSX::NSForegroundColorAttributeName(),
		       :value, color,
		       :range, [0,str.length])
      str.drawAtPoint([x, y])
    end

    def show_fixed()	show(OSX::NSFixedPitchFontMask);	end
    def show_all()	show;	end

    private
    def show(mask=0)
      fmgr = OSX::NSFontManager.sharedFontManager
      fonts = fmgr.availableFontNamesWithTraits(mask).to_a.map{|i| i.to_s }.sort
      puts fonts
    end
  end

  class NSSound < OSX::NSSound
  end
end

About Koders | Resources | Downloads | Support | Black Duck | Terms of Service | DMCA | Privacy Policy | Contact Us