Class: ErrorMessage

Inherits:
Object
  • Object
show all
Defined in:
lib/rsyntaxtree/error_message.rb

Overview

error_message.rb

Takes an error message and drow an image file of the very message

This file is part of RSyntaxTree, which is a ruby port of Andre Eisenbach’s excellent program phpSyntaxTree.

Copyright © 2007-2018 Yoichiro Hasebe <[email protected]> Copyright © 2003-2004 Andre Eisenbach <[email protected]>

Instance Method Summary collapse

Constructor Details

#initialize(text, font, font_size, filename, format) ⇒ ErrorMessage

Returns a new instance of ErrorMessage.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rsyntaxtree/error_message.rb', line 18

def initialize(text, font, font_size, filename, format)

  @text = text
  @font = font
  @font_size = font_size
  @filename = filename
  @format = format

  metrics = img_get_txt_metrics(text, font, font_size, true)

  @im = Image.new(metrics.width, metrics.height)
  @gc = Draw.new
  @gc.font = font
  @gc.pointsize = font_size
  @gc.stroke("transparent")
  @gc.fill("black")
  @gc.gravity(CenterGravity)
  @gc.text(0, 0, text)
end

Instance Method Details

#drawObject



59
60
61
# File 'lib/rsyntaxtree/error_message.rb', line 59

def draw
  @gc.draw(@im)
end

#img_get_txt_metrics(text, font, font_size, multiline) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/rsyntaxtree/error_message.rb', line 38

def img_get_txt_metrics(text, font, font_size, multiline)

  background = Image.new(500, 250)

  gc = Draw.new
  gc.annotate(background, 0, 0, 0, 0, text) do |gc|
    gc.font = font
    gc.pointsize = font_size
    gc.gravity = CenterGravity
    gc.stroke = 'none'
  end

  if multiline
    metrics = gc.get_multiline_type_metrics(background, text)
  else
    metrics = gc.get_type_metrics(background, text)
  end

  return metrics
end

#saveObject



63
64
65
66
# File 'lib/rsyntaxtree/error_message.rb', line 63

def save
  @gc.draw(@im)
  @im.write(@filename + "." + @format)
end