1 <?xml version="1.0" encoding="utf-8"?>
2 <RadicalChat>
3 <Version>RadicalChat 1.0.0.1455</Version>
4
5
6
7
8
9
10
11 <Server>
12 <RTMPServerURL>127.0.0.1</RTMPServerURL>
13 <RTMPServerPort>1935</RTMPServerPort>
14 </Server>
15
16 <Skin>
17
18 <GeneralProperties>
19 <Name>_GP_</Name>
20 <Constraints>
21 <MinWidth>800</MinWidth>
22 <MinHeight>600</MinHeight>
23 <MaxWidth>2000</MaxWidth>
24 <MaxHeight>1500</MaxHeight>
25 </Constraints>
26 </GeneralProperties>
27
28 <BG>
29 <SkinObject><Type>BasicPanel</Type>
30 <Name>Background</Name>
31
32 <Visible>true</Visible>
33
34 <Position>
35 <Left>0</Left>
36 <Top>0</Top>
37 <Right>100%</Right>
38 <Bottom>100%</Bottom>
39 </Position>
40
41 <LookAndFeel>
42
43 <Pattern>
44 <Image>./skin/images/walltexture.jpg</Image>
45 </Pattern>
46
47 <AlphaBlend>1</AlphaBlend>
48
49 <BlendMode>normal</BlendMode>
50
51 <ColorTransform>
52
53
54
55
56
57
58
59
60
61
62
63
64
65 <Color
66 redMultiplier="0.1" greenMultiplier="0.5" blueMultiplier="0.8" alphaMultiplier="1"
67 redOffset="128" greenOffset="128" blueOffset="128" alphaOffset="0"
68 />
69
70 </ColorTransform>
71 </LookAndFeel>
72 </SkinObject>
73
74
75 <SkinObject><Type>BasicPanel</Type>
76 <Name>PerformerVideoPanel</Name>
77
78 <Visible>true</Visible>
79
80 <Position>
81 <Left>10</Left>
82 <Top>10</Top>
83 <Right>410</Right>
84 <Bottom>360</Bottom>
85 </Position>
86
87 <LookAndFeel>
88
89 <NineGrid>
90 <SliceImgSequence>./skin/panels/rsp1_0{1-9}.png</SliceImgSequence>
91 </NineGrid>
92 </LookAndFeel>
93 </SkinObject>
94
95
96 <SkinObject><Type>BasicPanel</Type>
97 <Name>CameraGrayPanel</Name>
98
99 <Visible>true</Visible>
100
101 <Position>
102 <Left>{ListOfUsersPanel.Right}+15</Left>
103 <Top>{ListOfUsersPanel.Top}+10</Top>
104 <Right>{PerformerVideoPanel.Right}-5</Right>
105 <Bottom>100%-5</Bottom>
106 </Position>
107
108 <LookAndFeel>
109
110 <NineGrid>
111 <SliceImgSequence>./skin/panels/rsp2_0{1-9}.png</SliceImgSequence>
112 </NineGrid>
113 <AlphaBlend>0.75</AlphaBlend>
114 <ColorTransform>
115 <Color tintColor="0x999999" tintMultiplier="0.3" />
116 </ColorTransform>
117 </LookAndFeel>
118 </SkinObject>
119
120
121 <SkinObject><Type>BasicPanel</Type>
122 <Name>CameraPreviewPanel</Name>
123
124 <Visible>true</Visible>
125
126 <Position>
127 <Left>105</Left>
128 <Top>100%-125</Top>
129 <Width>147</Width>
130 <Height>128</Height>
131 </Position>
132
133 <LookAndFeel>
134
135 <NineGrid>
136 <SliceImgSequence>./skin/panels/rsqshadow2_0{1-9}.png</SliceImgSequence>
137 </NineGrid>
138 </LookAndFeel>
139 </SkinObject>
140
141
142 <SkinObject><Type>BasicPanel</Type>
143 <Name>InputTextPanel</Name>
144
145 <Visible>true</Visible>
146
147 <Position>
148 <Left>{ListOfUsersPanel.Right}+10</Left>
149 <Top>{ListOfUsersPanel.Top}</Top>
150 <Right>{PerformerVideoPanel.Right}</Right>
151 <Bottom>100%-85</Bottom>
152 </Position>
153
154 <LookAndFeel>
155
156 <NineGrid>
157 <SliceImgSequence>./skin/panels/rsp2_0{1-9}.png</SliceImgSequence>
158 </NineGrid>
159 </LookAndFeel>
160 </SkinObject>
161
162
163 <SkinObject><Type>BasicPanel</Type>
164 <Name>ListOfUsersPanel</Name>
165
166 <Visible>true</Visible>
167
168 <Position>
169 <Left>{PerformerVideoPanel.Left}</Left>
170 <Top>{PerformerVideoPanel.Bottom}+10</Top>
171 <Right>130</Right>
172 <Bottom>100%-5</Bottom>
173 </Position>
174
175 <LookAndFeel>
176
177 <NineGrid>
178 <SliceImgSequence>./skin/panels/rsp2_0{1-9}.png</SliceImgSequence>
179 </NineGrid>
180 </LookAndFeel>
181 </SkinObject>
182
183
184 <SkinObject><Type>BasicPanel</Type>
185 <Name>ChatTextPanel</Name>
186
187 <Visible>true</Visible>
188
189 <Position>
190 <Left>{PerformerVideoPanel.Right}+10</Left>
191 <Top>{PerformerVideoPanel.Top}</Top>
192 <Right>100%-5</Right>
193 <Bottom>100%-5</Bottom>
194 </Position>
195
196 <LookAndFeel>
197
198 <NineGrid>
199 <SliceImgSequence>./skin/panels/rsp2_0{1-9}.png</SliceImgSequence>
200 </NineGrid>
201 </LookAndFeel>
202 </SkinObject>
203
204
205 <SkinObject><Type>BasicPanel</Type>
206 <Name>InputTextBoxPanel</Name>
207
208 <Visible>true</Visible>
209
210 <Position>
211 <Left>{InputTextPanel.Left}+5</Left>
212 <Top>{InputTextPanel.Top}+40</Top>
213 <Right>{InputTextPanel.Right}-5</Right>
214 <Bottom>{InputTextPanel.Bottom}-40</Bottom>
215 </Position>
216
217 <LookAndFeel>
218
219 <NineGrid>
220 <SliceImgSequence>./skin/panels/rsp5_0{1-9}.png</SliceImgSequence>
221 </NineGrid>
222 </LookAndFeel>
223 </SkinObject>
224
225
226 <SkinObject><Type>BasicPanel</Type>
227 <Name>ImagePerformerVideoPanel</Name>
228
229 <Visible>true</Visible>
230
231 <Position>
232 <Left>140</Left>
233 <Top>140</Top>
234 <Width>128</Width>
235 <Height>128</Height>
236 </Position>
237
238 <LookAndFeel>
239
240 <NineGrid>
241 <Slice1>./skin/images/camera_chat.png</Slice1>
242 </NineGrid>
243 </LookAndFeel>
244 </SkinObject>
245
246
247 <SkinObject><Type>BasicPanel</Type>
248 <Name>ImageMyCameraPanel</Name>
249
250 <Visible>true</Visible>
251
252 <Position>
253 <Left>165</Left>
254 <Top>100%-70</Top>
255 <Width>64</Width>
256 <Height>64</Height>
257 </Position>
258
259 <LookAndFeel>
260
261 <NineGrid>
262 <Slice1>./skin/images/video.png</Slice1>
263 </NineGrid>
264 </LookAndFeel>
265 </SkinObject>
266
267
268
269 <SkinObject><Type>BasicButton</Type>
270 <Visible>true</Visible>
271 <Name>KickOutButton</Name>
272 <OnClick>
273 <Action>onUniversalCall_WithSelectedClient</Action>
274 <Value>KickOut</Value>
275 </OnClick>
276 <Position>
277 <Left>90</Left>
278 <Top>100%-40</Top>
279 <Width>36</Width>
280 <Height>30</Height>
281 </Position>
282 <LookAndFeel>
283 <Images>
284 <NormalImage>./skin/images/kickout_btn_01.png</NormalImage>
285 <OverImage>./skin/images/kickout_btn_02.png</OverImage>
286 <DownImage>./skin/images/kickout_btn_03.png</DownImage>
287 </Images>
288 </LookAndFeel>
289 </SkinObject>
290
291 <SkinObject><Type>BasicButton</Type>
292 <Visible>true</Visible>
293 <Name>PrivateButton</Name>
294 <OnClick>
295 <Action>onUniversalCall_WithSelectedClient</Action>
296 </OnClick>
297 <Position>
298 <Left>10</Left>
299 <Top>100%-40</Top>
300 <Width>80</Width>
301 <Height>30</Height>
302 </Position>
303 <LookAndFeel>
304 <Images>
305 <NormalImage>./skin/images/private_btn_01.png</NormalImage>
306 <OverImage>./skin/images/private_btn_02.png</OverImage>
307 <DownImage>./skin/images/private_btn_03.png</DownImage>
308 </Images>
309 </LookAndFeel>
310 </SkinObject>
311
312 <SkinObject><Type>BasicButton</Type>
313 <Name>ButtonSendMessage</Name>
314 <Visible>true</Visible>
315 <OnClick>
316 <Action>SendTextMessage</Action>
317 </OnClick>
318 <Position>
319 <Left>350</Left>
320 <Top>100%-120</Top>
321 <Width>56</Width>
322 <Height>30</Height>
323 </Position>
324 <LookAndFeel>
325 <Images>
326 <NormalImage>./skin/images/send_01.png</NormalImage>
327 <OverImage>./skin/images/send_02.png</OverImage>
328 <DownImage>./skin/images/send_03.png</DownImage>
329 </Images>
330 </LookAndFeel>
331 </SkinObject>
332
333 <SkinObject><Type>BasicButton</Type>
334 <Name>ButtonSelectSmile</Name>
335 <Visible>true</Visible>
336 <OnClick>
337 <Action>ShowDialog_SelectEmoticon</Action>
338 </OnClick>
339 <Position>
340 <Left>185</Left>
341 <Top>100%-120</Top>
342 <Width>36</Width>
343 <Height>30</Height>
344 </Position>
345 <LookAndFeel>
346 <Images>
347 <NormalImage>./skin/images/smile_btn_01.png</NormalImage>
348 <OverImage>./skin/images/smile_btn_02.png</OverImage>
349 <DownImage>./skin/images/smile_btn_03.png</DownImage>
350 </Images>
351 </LookAndFeel>
352 </SkinObject>
353
354
355 <SkinObject><Type>BasicButton</Type>
356 <Name>ButtonSelectColor</Name>
357 <Visible>true</Visible>
358 <OnClick>
359 <Action>ShowDialog_SelectColor</Action>
360
361 <Palette>
362 <Color>990000</Color>
363 <Color>FF0000</Color>
364 <Color>CC9933</Color>
365 <Color>FA9100</Color>
366 <Color>000000</Color>
367 <Color>006600</Color>
368 <Color>00CC00</Color>
369 <Color>99CC00</Color>
370 <Color>000066</Color>
371 <Color>0000CC</Color>
372 <Color>0099FF</Color>
373 <Color>9933FF</Color>
374 </Palette>
375 </OnClick>
376 <Position>
377 <Left>145</Left>
378 <Top>100%-120</Top>
379 <Width>36</Width>
380 <Height>30</Height>
381 </Position>
382 <LookAndFeel>
383 <Images>
384 <NormalImage>./skin/images/color_01.png</NormalImage>
385 <OverImage>./skin/images/color_02.png</OverImage>
386 <DownImage>./skin/images/color_03.png</DownImage>
387 </Images>
388 </LookAndFeel>
389 </SkinObject>
390
391
392 <SkinObject><Type>BasicButton</Type>
393 <Name>ButtonStartStreaming</Name>
394 <Visible>true</Visible>
395 <OnClick>
396 <Action>ShowDialog_SelectCamera</Action>
397 <AutoShowDialog>false</AutoShowDialog>
398 <StreamingConfiguration>
399
400 <StreamName>Stream1</StreamName>
401
402 <AVOption_NoCamera>true</AVOption_NoCamera>
403
404 <AVOption>
405
406 <Title>Standart configuration</Title>
407
408 <Description>Standart configuration 320x240 pixels, 10 FPS, high quality, audio 32kbps.</Description>
409
410 <IsDefault>false</IsDefault>
411
412 <Audio>
413
414 <Kbitrate>32</Kbitrate>
415
416 <SilenceLevel>5</SilenceLevel>
417 </Audio>
418
419 <Video>
420
421 <Resolution>
422 <Width>320</Width>
423 <Height>240</Height>
424 </Resolution>
425
426 <Kbitrate>320</Kbitrate>
427
428 <FPS>10</FPS>
429
430 <Quality>80</Quality>
431
432 <KeyFrameInterval>30</KeyFrameInterval>
433 </Video>
434 </AVOption>
435 <AVOption>
436
437 <Title>Good configuration</Title>
438
439 <Description>Standart configuration 320x240 pixels, 24 FPS, high quality, audio 32kbps.</Description>
440
441 <IsDefault>true</IsDefault>
442
443 <Audio>
444
445 <Kbitrate>32</Kbitrate>
446
447 <SilenceLevel>5</SilenceLevel>
448 </Audio>
449
450 <Video>
451
452 <Resolution>
453 <Width>320</Width>
454 <Height>240</Height>
455 </Resolution>
456
457 <Kbitrate>450</Kbitrate>
458
459 <FPS>24</FPS>
460
461 <Quality>95</Quality>
462
463 <KeyFrameInterval>30</KeyFrameInterval>
464 </Video>
465 </AVOption>
466 <AVOption>
467
468 <Title>Extra configuration</Title>
469
470 <Description>Standart configuration 400x300 pixels, 24 FPS, high quality, audio 32kbps.</Description>
471
472 <IsDefault>false</IsDefault>
473
474 <Audio>
475
476 <Kbitrate>32</Kbitrate>
477
478 <SilenceLevel>5</SilenceLevel>
479 </Audio>
480
481 <Video>
482
483 <Resolution>
484 <Width>400</Width>
485 <Height>300</Height>
486 </Resolution>
487
488 <Kbitrate>550</Kbitrate>
489
490 <FPS>24</FPS>
491
492 <Quality>95</Quality>
493
494 <KeyFrameInterval>30</KeyFrameInterval>
495 </Video>
496 </AVOption>
497 </StreamingConfiguration>
498 </OnClick>
499 <Position>
500 <Left>250</Left>
501 <Top>100%-45</Top>
502 <Width>100</Width>
503 <Height>36</Height>
504 </Position>
505 <LookAndFeel>
506 <Images>
507 <NormalImage>./skin/images/startstreaming_btn_01.png</NormalImage>
508 <OverImage>./skin/images/startstreaming_btn_02.png</OverImage>
509 <DownImage>./skin/images/startstreaming_btn_03.png</DownImage>
510 </Images>
511 </LookAndFeel>
512 </SkinObject>
513
514 <SkinObject><Type>HtmlTextArea</Type>
515 <Name>RoomName</Name>
516 <Visible>true</Visible>
517 <Position>
518 <Left>{PerformerVideoPanel.Left}+10</Left>
519 <Top>{PerformerVideoPanel.Top}+5</Top>
520 <Width>400</Width>
521 <Height>50</Height>
522 </Position>
523 <HtmlText>{{FONT SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"}}{{B}}Room name{{/B}}{{/FONT}}</HtmlText>
524 <IsTextSelectable>false</IsTextSelectable>
525 </SkinObject>
526 </BG>
527
528
529 <ML>
530
531 <SkinObject><Type>PerformerVideo</Type>
532 <Name>PerformerVideo</Name>
533 <Visible>true</Visible>
534 <Position>
535 <Left>15</Left>
536 <Top>55</Top>
537 <Width>388</Width>
538 <Height>290</Height>
539 </Position>
540 </SkinObject>
541
542 <SkinObject><Type>MyVideo</Type>
543 <Name>MyVideo</Name>
544 <Visible>true</Visible>
545 <Position>
546 <Left>155</Left>
547 <Top>100%-75</Top>
548 <Width>80</Width>
549 <Height>61</Height>
550 </Position>
551 </SkinObject>
552
553 <SkinObject><Type>ChatText</Type>
554 <Name>ChatText</Name>
555 <Visible>true</Visible>
556 <EmoticonsEnabled>false</EmoticonsEnabled>
557 <HtmlText>{{FONT FACE="Arial" SIZE="18" COLOR="#000000" LETTERSPACING="0" KERNING="0"}}{{B}}EVERYTHING YOU SEE HAS BEEN IMPLEMENTED BY 100 LINES OF PHP CODE: {{FONT COLOR="#0000FF"}}{{a href="./service.php" target="_blank"}}SEE HERE{{/a}}{{/FONT}} AND 500 LINES OF XML SKIN DOCUMENT: {{FONT COLOR="#0000FF"}}{{a href="config.xml" target="_blank"}}SEE HERE{{/a}}{{/FONT}}.{{BR /}}{{BR /}}{{/B}}{{/FONT}}{{FONT FACE="Arial" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"}}This chat is written in Radical Chat Framework for PHP - the first available solution which enable the developers to write flash videoconferencing applications entirely in PHP language without any further knowledge about Flash, Actionscript, RTMP protocol or stream server API. The framework unique design speeds up the video chat development process from 3-6 months to 2-4 days.{{/FONT}}{{BR /}}{{BR /}}{{FONT FACE="Arial" SIZE="12" COLOR="#FF0000" LETTERSPACING="0" KERNING="0"}}Stream server is currently used for development and testing.{{BR /}}{{/FONT}}</HtmlText>
558 <UserUIDFilter></UserUIDFilter>
559 <NewMessageSound>./skin/sounds/newmessage.mp3</NewMessageSound>
560 <PublicMessage>
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587 <Template>{{P ALIGN="LEFT"}}{{FONT FACE="_sans" SIZE="12" COLOR="#{message.getColor()}" LETTERSPACING="1" KERNING="0"}}{{B}}{message.sender.getNickName()}{{/B}}{{/FONT}}{{/P}}{{P ALIGN="LEFT"}}{{FONT FACE="_sans" SIZE="12" COLOR="#{message.getColor()}" LETTERSPACING="0" KERNING="0"}}{message.getText()}{{/FONT}}{{/P}}{{P ALIGN="RIGHT"}}{{FONT FACE="_sans" SIZE="8" COLOR="#000000" LETTERSPACING="0" KERNING="0"}}{datetime.format("%Y.%m.%d %h:%i:%s")}{{/FONT}}{{/P}}</Template>
588 </PublicMessage>
589 <PrivateMessage>
590
591
592
593
594
595 <Template>{{P ALIGN="LEFT"}}{{FONT FACE="_sans" SIZE="12" COLOR="#{message.getColor()}" LETTERSPACING="1" KERNING="0"}}{{B}}{{I}}{message.sender.getNickName()} &gt;&gt; {message.receiver.getNickName()}{{/I}}{{/B}}{{/FONT}}{{/P}}{{P ALIGN="LEFT"}}{{FONT FACE="_sans" SIZE="12" COLOR="#{message.getColor()}" LETTERSPACING="0" KERNING="0"}}{message.getText()}{{/FONT}}{{/P}}{{P ALIGN="RIGHT"}}{{FONT FACE="_sans" SIZE="8" COLOR="#000000" LETTERSPACING="0" KERNING="0"}}{datetime.format("%Y.%m.%d %h:%i:%s")}{{/FONT}}{{/P}}</Template>
596 </PrivateMessage>
597 <MessagesBufferSize>15</MessagesBufferSize>
598 <Position>
599 <Left>430</Left>
600 <Top>45</Top>
601 <Right>100%-10</Right>
602 <Bottom>100%-15</Bottom>
603 </Position>
604 </SkinObject>
605
606 <SkinObject><Type>ChatInput</Type>
607 <Name>ChatInput</Name>
608 <Visible>true</Visible>
609 <MaxChars>512</MaxChars>
610 <HtmlText>{{FONT SIZE="14" FACE="Courier" COLOR="#995500" LETTERSPACING="0" KERNING="0"}}</HtmlText>
611 <MessageSentSound>./skin/sounds/sending.mp3</MessageSentSound>
612 <Position>
613 <Left>145</Left>
614 <Top>410</Top>
615 <Right>405</Right>
616 <Bottom>100%-125</Bottom>
617 </Position>
618 <SendTextMessageWhenEnterKeyPressed>true</SendTextMessageWhenEnterKeyPressed>
619 </SkinObject>
620
621 <SkinObject><Type>ListOfUsers</Type>
622 <Name>ListOfUsers</Name>
623 <Visible>true</Visible>
624 <AllUsers>
625 <NickName>All users</NickName>
626 </AllUsers>
627 <UserUIDFilter>.*</UserUIDFilter>
628 <SoundUserEnter></SoundUserEnter>
629 <SoundUserLeft></SoundUserLeft>
630 <Position>
631 <Left>15</Left>
632 <Top>410</Top>
633 <Right>125</Right>
634 <Bottom>100%-15</Bottom>
635 </Position>
636 </SkinObject>
637
638 </ML>
639
640 <FG>
641
642 </FG>
643 </Skin>
644 </RadicalChat>
645