MCPcopy Create free account
hub / github.com/KLayout/klayout / set_pattern

Method set_pattern

src/laybasic/laybasic/layLineStyles.cc:220–265  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

218#endif
219
220void
221LineStyleInfo::set_pattern (uint32_t pt, unsigned int w)
222{
223 tl::MutexLocker locker (& s_mutex);
224 m_scaled_pattern.reset (0);
225
226 memset (m_pattern, 0, sizeof (m_pattern));
227
228 if (w >= 32) {
229 w = 32;
230 }
231 m_width = w;
232
233 // w == 0 means solid pattern
234 if (w == 0) {
235 m_pattern[0] = 0xffffffff;
236 m_pattern_stride = 1;
237 return;
238 }
239
240
241 // compute pattern stride
242 m_pattern_stride = 1;
243 while ((m_pattern_stride * 32) % w != 0) {
244 ++m_pattern_stride;
245 }
246
247 uint32_t *pp = m_pattern;
248 uint32_t dd = pt;
249
250 unsigned int b = 0;
251 for (unsigned int i = 0; i < m_pattern_stride; ++i) {
252 uint32_t dout = 0;
253 for (uint32_t m = 1; m != 0; m <<= 1) {
254 if ((dd & 1) != 0) {
255 dout |= m;
256 }
257 dd >>= 1;
258 if (++b == w) {
259 dd = pt;
260 b = 0;
261 }
262 }
263 *pp++ = dout;
264 }
265}
266
267const LineStyleInfo &
268LineStyleInfo::scaled (unsigned int n) const

Callers 4

read_viadef_by_ruleMethod · 0.45
read_viasMethod · 0.45
add_stipple1Function · 0.45
add_line_style1Function · 0.45

Calls 1

resetMethod · 0.45

Tested by

no test coverage detected