1 /* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13 * express or implied.
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
17 */
18 #include "atom.h"
19 #include "atomutils.h"
20 #include "oscl_file_io.h"
21 #include"stylerecord.h"
22 #include"a_atomdefs.h"
23
PVA_FF_StyleRecord()24 PVA_FF_StyleRecord::PVA_FF_StyleRecord() : PVA_FF_Atom(FourCharConstToUint32('t', 't', 's', 's'))
25 {
26 _startChar = 0;
27 _endChar = 0;
28 _fontID = 0;
29 _fontStyleFlags = 0;
30 _fontSize = 0;
31 _pRGBA = NULL;
32 recomputeSize();
33 }
34
PVA_FF_StyleRecord(uint16 StartChar,uint16 EndChar,uint16 FontID,uint8 FontSizeFlag,uint8 FontSize,uint8 * Trgba)35 PVA_FF_StyleRecord::PVA_FF_StyleRecord(uint16 StartChar, uint16 EndChar, uint16 FontID, uint8 FontSizeFlag, uint8 FontSize, uint8* Trgba)
36 : PVA_FF_Atom(FourCharConstToUint32('t', 't', 's', 's'))
37 {
38 _endChar = 0;
39 _fontID = 0;
40 _fontStyleFlags = 0;
41 _fontSize = 0;
42 _pRGBA = NULL;
43 setStartChar(StartChar);
44 setEndChar(EndChar);
45 setFontID(FontID);
46 setFontStyleFlags(FontSizeFlag);
47 setFontSize(FontSize);
48 setTextColourRGBA(Trgba);
49
50 recomputeSize();
51 }
setStartChar(uint16 startchar)52 void PVA_FF_StyleRecord::setStartChar(uint16 startchar)
53 {
54 if (_startChar == 0)
55 {
56 _startChar = startchar;
57 }
58 }
59
setEndChar(uint16 endchar)60 void PVA_FF_StyleRecord::setEndChar(uint16 endchar)
61 {
62 if (_endChar == 0)
63 {
64 _endChar = endchar;
65 }
66 }
67
setFontID(uint16 FontID)68 void PVA_FF_StyleRecord::setFontID(uint16 FontID)
69 {
70 if (_fontID == 0)
71 {
72 _fontID = FontID;
73 }
74 }
75
setFontStyleFlags(uint8 flag)76 void PVA_FF_StyleRecord::setFontStyleFlags(uint8 flag)
77 {
78 if (_fontStyleFlags == 0)
79 {
80 _fontStyleFlags = flag;
81 }
82 }
83
setFontSize(uint8 FontSize)84 void PVA_FF_StyleRecord::setFontSize(uint8 FontSize)
85 {
86 if (_fontSize == 0)
87 {
88 _fontSize = FontSize;
89 }
90 }
91
setTextColourRGBA(uint8 * RGBA)92 void PVA_FF_StyleRecord::setTextColourRGBA(uint8* RGBA)
93 {
94 if (_pRGBA == NULL)
95 {
96 _pRGBA = (uint8 *)(OSCL_MALLOC(4 * sizeof(uint8)));
97 _pRGBA[0] = RGBA[0];
98 _pRGBA[1] = RGBA[1];
99 _pRGBA[2] = RGBA[2];
100 _pRGBA[3] = RGBA[3];
101 }
102
103 }
104
105
renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP * fp)106 bool PVA_FF_StyleRecord::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp)
107 {
108 int32 rendered = 0;
109
110 if (!PVA_FF_AtomUtils::render16(fp, _startChar))
111 {
112 return false;
113 }
114 rendered += 2;
115 if (!PVA_FF_AtomUtils::render16(fp, _endChar))
116 {
117 return false;
118 }
119 rendered += 2;
120 if (!PVA_FF_AtomUtils::render16(fp, _fontID))
121 {
122 return false;
123 }
124 rendered += 2;
125 if (!PVA_FF_AtomUtils::render8(fp, _fontStyleFlags))
126 {
127 return false;
128 }
129 rendered += 1;
130 if (!PVA_FF_AtomUtils::render8(fp, _fontSize))
131 {
132 return false;
133 }
134 rendered += 1;
135 if (!PVA_FF_AtomUtils::renderByteData(fp, 4, (uint8 *)_pRGBA))
136 {
137 return false;
138 }
139 rendered += 4;
140
141
142 return true;
143 }
144
recomputeSize()145 void PVA_FF_StyleRecord::recomputeSize()
146 {
147 int32 size = 0;
148
149 size += 2;
150 size += 2;
151 size += 2;
152 size += 1;
153 size += 1;
154 size += 4;
155
156 _size = size;
157
158 // Update size of parent
159 if (_pparent != NULL)
160 {
161 _pparent->recomputeSize();
162 }
163 }
164
getSize()165 uint32 PVA_FF_StyleRecord::getSize()
166 {
167 recomputeSize();
168 return (_size);
169 }
170
171 // Destructor
~PVA_FF_StyleRecord()172 PVA_FF_StyleRecord::~PVA_FF_StyleRecord()
173 {
174 if (_pRGBA)
175 {
176 OSCL_FREE(_pRGBA);
177 _pRGBA = NULL;
178 }
179 }
180