# encoding: utf-8
#
# errors.rb : Implements custom error classes for Prawn
#
# Copyright April 2008, Gregory Brown.  All Rights Reserved.
#
# This is free software. Please see the LICENSE and COPYING files for details.
#
module Prawn
  module Errors
     
     # This error is raised when Prawn::PdfObject() encounters a Ruby object it
     # cannot convert to PDF
     #
     FailedObjectConversion = Class.new(StandardError)
     
     # This error is raised when Document#page_layout is set to anything
     # other than :portrait or :landscape            
     #
     InvalidPageLayout = Class.new(StandardError)       

     # Raised when a table is spanned in an impossible way.
     #
     InvalidTableSpan = Class.new(StandardError)
     
     # This error is raised when a method requiring a current page is called 
     # without being on a page.
     #
     NotOnPage = Class.new(StandardError)
     
     # This error is raised when Prawn cannot find a specified font   
     #
     UnknownFont = Class.new(StandardError)   

     # Raised when Prawn is asked to draw something into a too-small box
     #
     CannotFit = Class.new(StandardError)

     # Raised if group() is called with a block that is too big to be
     # rendered in the current context.
     #
     CannotGroup = Class.new(StandardError) 

     # This error is raised when Prawn is being used on a M17N aware VM,
     # and the user attempts to add text that isn't compatible with UTF-8
     # to their document
     #
     IncompatibleStringEncoding = Class.new(StandardError)
     
     # This error is raised when Prawn encounters an unknown key in functions
     # that accept an options hash.  This usually means there is a typo in your
     # code or that the option you are trying to use has a different name than
     # what you have specified. 
     #
     UnknownOption = Class.new(StandardError)

     # this error is raised when a user attempts to embed an image of an unsupported
     # type. This can either a completely unsupported format, or a dialect of a
     # supported format (ie. some types of PNG)
     UnsupportedImageType = Class.new(StandardError)

    # This error is raised when a named element has alredy been
    # created. For example, in the stamp module, stamps must have
    # unique names within a document
    NameTaken = Class.new(StandardError)

    # This error is raised when a name is not a valid format
    InvalidName = Class.new(StandardError)

    # This error is raised when an object is attempted to be
    # referenced by name, but no such name is associated with an object
    UndefinedObjectName = Class.new(StandardError)
    
    # This error is raised when a required option has not been set
    RequiredOption = Class.new(StandardError)
    
    # This error is raised when a requested outline item with a given title does not exist
    UnknownOutlineTitle = Class.new(StandardError)

    # This error is raised when a block is required, but not provided
    BlockRequired = Class.new(StandardError)
    
    # This error is rased when a graphics method is called with improper arguments
    InvalidGraphicsPath = Class.new(StandardError)
    
    # This error is raised when Prawn fails to load a template file
    #
    TemplateError = Class.new(StandardError)
    
    # This error is raise when trying to restore a graphic state that 
    #
    EmptyGraphicStateStack = Class.new(StandardError)

    # Raised when unrecognized content is provided for a table cell.
    #
    UnrecognizedTableContent = Class.new(StandardError)
    
  end
end   
