SHOW:
|
|
- or go back to the newest paste.
1 | - | LoadCPlugin("TASEncodingPackage/programs/freesub.dll") |
1 | + | |
2 | \ clip clp, | |
3 | - | scale=1 # 1 or 8 |
3 | + | |
4 | \ int "first_frame", | |
5 | - | blankclip(1, 256*scale, 224*scale, color=$00ff00ff) |
5 | + | |
6 | - | ng_sub() |
6 | + | |
7 | - | bilinearresize(640, 480) |
7 | + | |
8 | \ int "x", | |
9 | \ int "y", | |
10 | \ string "font", | |
11 | \ int "size", | |
12 | \ int "align", | |
13 | \ int "lsp", | |
14 | \ int "font_width", | |
15 | \ int "halo_width", | |
16 | \ int "halo_height", | |
17 | \ int "x_scale", | |
18 | \ int "y_scale", | |
19 | \ int "text_color8", | |
20 | \ int "halo_color8", | |
21 | \ int "font8", | |
22 | \ int "spc8", | |
23 | \ int "lsp8", | |
24 | \ int "align8", | |
25 | \ int "x8", | |
26 | \ int "y8", | |
27 | \ int "size8", | |
28 | \ int "font_width8", | |
29 | \ int "font_angle8", | |
30 | \ string "halo8", | |
31 | \ string "shadow8" | |
32 | \){ | |
33 | ||
34 | #Version 3 2012/12/1 | |
35 | ||
36 | text = default( text, "This is a tool-assisted recording.\n" + \ | |
37 | "For details, visit http://TASVideos.org/") | |
38 | first_frame = default(first_frame, 0) | |
39 | last_frame = default( last_frame, first_frame + 299) | |
40 | text_color = default( text_color, $00DDDDDD) | |
41 | halo_color = default( halo_color, $80000000) | |
42 | - | #Version 1 2012/11/30 |
42 | + | font = default( font, "helvB12") |
43 | font_real = "C:/mf/NGcode/TASEncodingPackage/fonts/"+ font +".bdf" | |
44 | lsp = default( lsp, 0) | |
45 | x_scale = default( x_scale, 8) | |
46 | y_scale = default( y_scale, x_scale) | |
47 | align = default( align, 8) | |
48 | align_x = align % 3 | |
49 | align_y = (align - 1) / 3 | |
50 | - | font = default( font, "TASEncodingPackage/fonts/helvB12.bdf") |
50 | + | default_x = (align_x == 0) ? clp.width - 8 : \ |
51 | (align_x == 2) ? clp.width / 2 : 8 | |
52 | default_y = (align_y == 0) ? clp.height - 8 : \ | |
53 | (align_y == 1) ? clp.height / 2 : 8 | |
54 | x8 = (defined(x)) ? default(x8, x*x_scale) : default_x | |
55 | y8 = (defined(y)) ? default(y8, y*y_scale) : default_y | |
56 | x = default( x, default_x) | |
57 | - | default_x = (align_x == 0) ? clp.width - 2 : \ |
57 | + | |
58 | - | (align_x == 2) ? clp.width / 2 : 2 |
58 | + | |
59 | - | default_y = (align_y == 0) ? clp.height - 2 : \ |
59 | + | |
60 | - | (align_y == 1) ? clp.height / 2 : 2 |
60 | + | |
61 | halo_height = default(halo_height, size) | |
62 | ||
63 | text_color8 = default(text_color8, text_color) | |
64 | halo_color8 = default(halo_color8, halo_color) | |
65 | font8 = default( font8, "Ariel") | |
66 | spc8 = default( spc8, 0) | |
67 | lsp8 = default( lsp8, lsp*y_scale) | |
68 | align8 = default( align8, align) | |
69 | size8 = default( size8, 112) | |
70 | font_width8 = default(font_width8, 0) | |
71 | font_angle8 = default(font_angle8, 0) | |
72 | halo_radius8 = 0 | |
73 | mode8 = "" | |
74 | ||
75 | #OO@ | |
76 | # OO@ | |
77 | # O@ | |
78 | # @ | |
79 | # @ | |
80 | # @ | |
81 | # O | |
82 | # @ | |
83 | # O | |
84 | # O | |
85 | # @ | |
86 | # O | |
87 | #@ O | |
88 | ||
89 | #using an unfilled circle reduces the number of calculations | |
90 | #by a factor of ~16 | |
91 | circle_12_jagged="0 0 "+\ | |
92 | " 2 12 5 11 7 10 8 9 "+\ | |
93 | " 12 2 11 5 10 7 9 8 "+\ | |
94 | " -2 12 -5 11 -7 10 -8 9 "+\ | |
95 | " -12 2 -11 5 -10 7 -9 8 "+\ | |
96 | "-2 -12 -5 -11 -7 -10 -8 -9 "+\ | |
97 | "-12 -2 -11 -5 -10 -7 -9 -8 "+\ | |
98 | - | circle_12="0 0 "+\ |
98 | + | |
99 | " 12 -2 11 -5 10 -7 9 -8 " | |
100 | ||
101 | circle_12="0 0 "+\ | |
102 | "12 0 0 12 -12 0 0 -12 "+\ | |
103 | "1 12 2 12 3 11 4 11 5 11 6 10 7 10 8 9 "+\ | |
104 | "12 1 12 2 11 3 11 4 11 5 10 6 10 7 9 8 "+\ | |
105 | "-1 12 -2 12 -3 11 -4 11 -5 11 -6 10 -7 10 -8 9 "+\ | |
106 | "-12 1 -12 2 -11 3 -11 4 -11 5 -10 6 -10 7 -9 8 "+\ | |
107 | "-1 -12 -2 -12 -3 -11 -4 -11 -5 -11 -6 -10 -7 -10 -8 -9 "+\ | |
108 | "-12 -1 -12 -2 -11 -3 -11 -4 -11 -5 -10 -6 -10 -7 -9 -8 "+\ | |
109 | "1 -12 2 -12 3 -11 4 -11 5 -11 6 -10 7 -10 8 -9 "+\ | |
110 | - | sub = FreeSub(clp, text, x, y, first_frame, last_frame, font, \ |
110 | + | "12 -1 12 -2 11 -3 11 -4 11 -5 10 -6 10 -7 9 -8 " |
111 | - | size, text_color, halo_color, align, lsp, font_width, \ |
111 | + | |
112 | - | halo_width, halo_height) |
112 | + | |
113 | shadow8 = default( shadow8, " -4 -8") | |
114 | ||
115 | sub = FreeSub(clp, text, x, y, first_frame, last_frame, \ | |
116 | font_real, size, text_color, halo_color, align, lsp, \ | |
117 | font_width, halo_width, halo_height) | |
118 | ||
119 | sub_HD = ng_bighalo(clp, text, x8, y8, first_frame, last_frame, \ | |
120 | font8, size8, text_color8, halo_color8, align8, spc8, lsp8, \ | |
121 | font_width8, font_angle8, halo_radius8, mode8, halo8, shadow8) | |
122 | ||
123 | (clp.height >= 1080) ? sub_HD : sub | |
124 | } | |
125 | ||
126 | function ng_bighalo( | |
127 | \ clip clp, | |
128 | \ string text, | |
129 | \ float "x", | |
130 | \ float "y", | |
131 | \ int "first_frame", | |
132 | \ int "last_frame", | |
133 | \ string "font", | |
134 | \ float "size", | |
135 | \ int "text_color", | |
136 | \ int "halo_color", | |
137 | \ int "align", | |
138 | \ int "spc", | |
139 | \ int "lsp", | |
140 | \ float "font_width", | |
141 | \ float "font_angle", | |
142 | \ int "halo_radius", | |
143 | \ string "mode", | |
144 | \ string "halo", | |
145 | \ string "shadow" | |
146 | \){ | |
147 | ||
148 | #Version 15 2012/11/30 | |
149 | # - drop shadow added | |
150 | # - halo_radius still works, but calculating the points of | |
151 | # a hollow circle for halo is much faster | |
152 | # - mode is depricated since memo-ing isn't as needed | |
153 | ||
154 | first_frame = default(first_frame, 0) | |
155 | last_frame = default( last_frame, first_frame + 299) | |
156 | font = default( font, "Ariel") | |
157 | size = default( size, 112) | |
158 | x = default( x, -1) | |
159 | y = default( y, -1) | |
160 | text_color = default( text_color, $00DDDDDD) | |
161 | halo_color = default( halo_color, $80000000) | |
162 | align = default( align, 5) | |
163 | spc = default( spc, 0) | |
164 | lsp = default( lsp, 0) | |
165 | font_width = default( font_width, 0) | |
166 | font_angle = default( font_angle, 0) | |
167 | halo_radius = default(halo_radius, 12) | |
168 | mode = default( mode, "depricated") | |
169 | halo = default( halo, mt_circle(halo_radius)) | |
170 | shadow = default( shadow, " -4 -8") | |
171 | w = clp.width | |
172 | h = clp.height | |
173 | ||
174 | invis = BlankClip(1, w, h, pixel_type="YV12") | |
175 | tm = Subtitle(invis, text, x, y, 0, 0, font, size, $00FFFFFF,\ | |
176 | 0, align, spc, lsp, font_width, font_angle) | |
177 | text_mask = tm.mt_expand(mode="0 0 "+shadow, chroma="-128") | |
178 | halo_mask = text_mask.mt_expand(mode=halo, chroma="-128") | |
179 | ||
180 | h_color = BitAND(halo_color, $00FFFFFF) | |
181 | t_color = BitAND(text_color, $00FFFFFF) | |
182 | h_alpha = 255 - BitRShiftU(BitAND(halo_color, $FF000000), 24) | |
183 | t_alpha = 255 - BitRShiftU(BitAND(text_color, $FF000000), 24) | |
184 | lut_str = string(h_alpha)+ " x * 255 / " +string(t_alpha)+\ | |
185 | " " +string(h_alpha)+ " - y * 255 / +" | |
186 | ||
187 | alpha_mask = mt_lutxy(halo_mask, text_mask, lut_str) | |
188 | ||
189 | hc = BlankClip(1, w, h, color=h_color) | |
190 | tc = Subtitle(hc, text, x, y, 0, 0, font, size, t_color,\ | |
191 | 0, align, spc, lsp, font_width, font_angle) | |
192 | overlay = tc.Mask(alpha_mask.ConvertToRGB32()) | |
193 | ||
194 | clp.ApplyRange(first_frame, last_frame, "Layer", overlay) | |
195 | } |