48 Base::_initialise(_style, _coord, _align, _info, _parent, _croppedParent, _creator, _name);
50 initialiseWidgetSkin(_info);
62 initialiseWidgetSkin(_info);
65 void StaticImage::initialiseWidgetSkin(
ResourceSkin* _info)
69 if ( ! properties.empty() )
71 MapString::const_iterator iter = properties.end();
72 if ((iter = properties.find(
"ImageTexture")) != properties.end())
setImageTexture(iter->second);
77 if ((iter = properties.find(
"ImageResource")) != properties.end())
setItemResource(iter->second);
78 if ((iter = properties.find(
"ImageGroup")) != properties.end())
setItemGroup(iter->second);
79 if ((iter = properties.find(
"ImageName")) != properties.end())
setItemName(iter->second);
83 void StaticImage::shutdownWidgetSkin()
90 mCurrentTextureName = _texture;
95 mRectImage.
top = _coord.
top;
100 updateSelectIndex(mIndexSelect);
110 if (mIndexSelect ==
ITEM_NONE) mIndexSelect = 0;
113 updateSelectIndex(mIndexSelect);
119 mRectImage.
top = _coord.
top;
124 if (mSizeTile.
empty()) mSizeTile = _coord.
size();
126 if (mIndexSelect ==
ITEM_NONE) mIndexSelect = 0;
129 updateSelectIndex(mIndexSelect);
139 if (mIndexSelect ==
ITEM_NONE) mIndexSelect = 0;
142 updateSelectIndex(mIndexSelect);
147 mCurrentTextureName = _texture;
159 updateSelectIndex(mIndexSelect);
163 void StaticImage::recalcIndexes()
167 if ((mRectImage.
right <= mRectImage.
left) || (mRectImage.
bottom <= mRectImage.
top))
return;
168 if ((mSizeTile.
width <= 0) || (mSizeTile.
height <= 0))
return;
170 size_t count_h = (size_t)(mRectImage.
width() / mSizeTile.
width);
171 size_t count_v = (size_t)(mRectImage.
height() / mSizeTile.
height);
179 int pos_h = mRectImage.
left;
180 int pos_v = mRectImage.
top;
182 for (
size_t v=0; v<count_v; ++v)
184 for (
size_t h=0; h<count_h; ++h)
187 pos_h += mSizeTile.
width;
189 pos_v += mSizeTile.
height;
190 pos_h = mRectImage.
left;
194 void StaticImage::updateSelectIndex(
size_t _index)
196 mIndexSelect = _index;
198 if ((_index ==
ITEM_NONE) || (_index >= mItems.size()))
208 VectorImages::iterator iter = mItems.begin() + _index;
210 if (iter->images.size() < 2)
224 if ( ! iter->images.empty())
234 mItems.erase(mItems.begin() + _index);
238 if (mItems.empty()) updateSelectIndex(
ITEM_NONE);
239 else if ((_index < mIndexSelect) || (mIndexSelect == mItems.size())) updateSelectIndex(mIndexSelect--);
252 if (_index ==
ITEM_NONE) _index = mItems.size();
254 VectorImages::iterator iter = mItems.insert(mItems.begin() + _index,
ImageItem());
258 if ((mIndexSelect !=
ITEM_NONE) && (_index <= mIndexSelect)) updateSelectIndex(mIndexSelect++);
265 VectorImages::iterator iter = mItems.begin() + _index;
266 iter->images.clear();
269 if (_index == mIndexSelect) updateSelectIndex(mIndexSelect);
272 void StaticImage::frameEntered(
float _frame)
276 if (mItems.empty())
return;
277 VectorImages::iterator iter = mItems.begin() + mIndexSelect;
278 if ((iter->images.size() < 2) || (iter->frame_rate == 0))
return;
280 mCurrentTime += _frame;
282 while (mCurrentTime >= iter->frame_rate)
284 mCurrentTime -= iter->frame_rate;
286 if (mCurrentFrame >= (iter->images.size())) mCurrentFrame = 0;
295 VectorImages::iterator iter = mItems.begin() + _index;
296 iter->images.clear();
302 VectorImages::iterator iter = mItems.begin() + _index;
309 VectorImages::iterator iter = mItems.begin() + _index;
310 iter->frame_rate = _rate;
316 VectorImages::iterator iter = mItems.begin() + _index;
317 return iter->frame_rate;
324 VectorImages::iterator iter = mItems.begin() + _index;
325 MYGUI_ASSERT_RANGE(_indexSourceFrame, iter->images.size(),
"StaticImage::addItemFrameDublicate");
326 iter->images.push_back(iter->images[_indexSourceFrame]);
333 VectorImages::iterator iter = mItems.begin() + _index;
335 if (_indexFrame ==
ITEM_NONE) _indexFrame = iter->images.size() - 1;
337 iter->images.insert(iter->images.begin() + _indexFrame,
345 VectorImages::iterator iter = mItems.begin() + _index;
347 if (_indexFrame ==
ITEM_NONE) _indexFrame = iter->images.size() - 1;
349 MYGUI_ASSERT_RANGE(_indexSourceFrame, iter->images.size(),
"StaticImage::insertItemFrameDublicate");
351 iter->images.insert(iter->images.begin() + _indexFrame, iter->images[_indexSourceFrame]);
358 VectorImages::iterator iter = mItems.begin() + _index;
368 VectorImages::iterator iter = mItems.begin() + _index;
370 if (_indexFrame ==
ITEM_NONE) _indexFrame = iter->images.size() - 1;
372 iter->images.erase(iter->images.begin() + _indexFrame);
377 mCurrentTextureName = _info.
texture;
382 if (_info.
frames.size() != 0)
384 std::vector<IntPoint>::const_iterator iter = _info.
frames.begin();
389 for (++iter; iter!=_info.
frames.end(); ++iter)
397 updateSelectIndex(mIndexSelect);
404 return resource !=
nullptr;
411 return resource !=
nullptr;
416 if (mResource == _resource)
420 if (mResource ==
nullptr && _resource !=
nullptr)
422 if (mItemGroup.empty())
425 while (iter_group.
next())
427 mItemGroup = iter_group.
current().name;
428 if (mItemName.empty() && !iter_group.
current().indexes.empty())
430 mItemName = iter_group.
current().indexes[0].name;
435 else if (mItemName.empty())
438 while (iter_group.
next())
440 if (mItemGroup == iter_group.
current().name)
442 if (!iter_group.
current().indexes.empty())
444 mItemName = iter_group.
current().indexes[0].name;
452 mResource = _resource;
453 if (!mResource || mItemGroup.empty() || mItemName.empty()) updateSelectIndex(
ITEM_NONE);
459 if (mItemGroup == _group)
463 if (!mResource || mItemGroup.empty() || mItemName.empty()) updateSelectIndex(
ITEM_NONE);
469 if (mItemName == _name)
473 if (!mResource || mItemGroup.empty() || mItemName.empty()) updateSelectIndex(
ITEM_NONE);
479 mResource = _resource;
482 if (!mResource || mItemGroup.empty() || mItemName.empty()) updateSelectIndex(
ITEM_NONE);
486 void StaticImage::frameAdvise(
bool _advise)
490 if ( ! mFrameAdvise )
501 mFrameAdvise =
false;
518 if (mIndexSelect != _index) updateSelectIndex(_index);
524 else if (_key ==
"Image_Coord")
setImageCoord(utility::parseValue<IntCoord>(_value));
525 else if (_key ==
"Image_Tile")
setImageTile(utility::parseValue<IntSize>(_value));
526 else if (_key ==
"Image_Index")
setItemSelect(utility::parseValue<size_t>(_value));
529 else if (_key ==
"Image_Name")
setItemName(_value);