Skip to content

Commit

Permalink
Set encoding when transforming patterns. Preserve SMasks when transfo…
Browse files Browse the repository at this point in the history
…rming image Xobjects
  • Loading branch information
peterwilliams97 committed Jan 11, 2018
1 parent 6c3e49c commit 651ff90
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
14 changes: 10 additions & 4 deletions pdf/model/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,20 +82,26 @@ func (this *PdfTilingPattern) IsColored() bool {
}

// Get the pattern cell's content stream.
func (this *PdfTilingPattern) GetContentStream() ([]byte, error) {
func (this *PdfTilingPattern) GetContentStream() ([]byte, StreamEncoder, error) {
streamObj, ok := this.container.(*PdfObjectStream)
if !ok {
common.Log.Debug("Tiling pattern container not a stream (got %T)", this.container)
return nil, ErrTypeError
return nil, nil, ErrTypeError
}

decoded, err := DecodeStream(streamObj)
if err != nil {
common.Log.Debug("Failed decoding stream, err: %v", err)
return nil, err
return nil, nil, err
}

encoder, err := NewEncoderFromStream(streamObj)
if err != nil {
common.Log.Debug("Failed finding decoding encoder: %v", err)
return nil, nil, err
}

return decoded, nil
return decoded, encoder, nil
}

// Set the pattern cell's content stream.
Expand Down
11 changes: 11 additions & 0 deletions pdf/model/xobject.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,17 @@ func NewXObjectImage() *XObjectImage {
// If encoder is nil, uses raw encoding (none).
func NewXObjectImageFromImage(img *Image, cs PdfColorspace, encoder StreamEncoder) (*XObjectImage, error) {
xobj := NewXObjectImage()
return UpdateXObjectImageFromImage(xobj, img, cs, encoder)
}

// UpdateXObjectImageFromImage reates a new XObject Image from an image object with default options except
// that is has the masks from xobjIn
// If encoder is nil, uses raw encoding (none).
func UpdateXObjectImageFromImage(xobjIn *XObjectImage, img *Image, cs PdfColorspace, encoder StreamEncoder) (*XObjectImage, error) {
xobj := NewXObjectImage()
xobj.SMask = xobjIn.SMask
xobj.Mask = xobjIn.Mask
xobj.ImageMask = xobjIn.ImageMask

if encoder == nil {
encoder = NewRawEncoder()
Expand Down

0 comments on commit 651ff90

Please sign in to comment.