public WordPlate GetNewWordPlate() { //create new and register if (_wordPlates.Count == MaxPlateCount) { if (AutoRemoveOldestPlate) { //**dictionay not guarantee sorted id** //so we use queue, (TODO: use priority queue) WordPlate oldest = _wordPlatesQueue.Dequeue(); _wordPlates.Remove(oldest._plateId); #if DEBUG if (oldest.dbugUsedCount < 50) { } //oldest.dbugSaveBackBuffer("word_plate_" + oldest._plateId + ".png"); #endif oldest.Dispose(); oldest = null; } } if (s_totalPlateId + 1 >= ushort.MaxValue) { throw new NotSupportedException(); } s_totalPlateId++; //so plate_id starts at 1 WordPlate wordPlate = new WordPlate(s_totalPlateId, _defaultPlateW, _defaultPlateH); _wordPlates.Add(s_totalPlateId, wordPlate); _wordPlatesQueue.Enqueue(wordPlate); #if DEBUG wordPlate.Cleared += WordPlate_Cleared; #endif return(_latestPlate = wordPlate); }
private void WordPlate_Cleared(WordPlate obj) { }