public TranslatedImage(string fileName, byte[] data, ITranslatedImageSource source)
        {
            _source = source;

            FileName = fileName;
            Data     = data;
        }
        public TranslatedImage(string fileName, byte[] data, ITranslatedImageSource source)
        {
            _source = source;

            FileName    = fileName;
            Data        = data;
            ImageFormat = Formats[Path.GetExtension(fileName)];
        }
 private void RegisterTranslatedImage(string fileName, string key, byte[] data, ITranslatedImageSource source)
 {
     _translatedImages[key] = new TranslatedImage(fileName, data, Settings.CacheTexturesInMemory ? null : source);
 }
        private void RegisterImageFromStream(string fullFileName, ITranslatedImageSource source)
        {
            try
            {
                var fileName  = Path.GetFileNameWithoutExtension(fullFileName);
                var startHash = fileName.LastIndexOf("[");
                var endHash   = fileName.LastIndexOf("]");

                if (endHash > -1 && startHash > -1 && endHash > startHash)
                {
                    var takeFrom = startHash + 1;

                    // load based on whether or not the key is image hashed
                    var    parts = fileName.Substring(takeFrom, endHash - takeFrom).Split('-');
                    string key;
                    string originalHash;
                    if (parts.Length == 1)
                    {
                        key          = parts[0];
                        originalHash = parts[0];
                    }
                    else if (parts.Length == 2)
                    {
                        key          = parts[0];
                        originalHash = parts[1];
                    }
                    else
                    {
                        XuaLogger.AutoTranslator.Warn($"Image not loaded (unknown hash): {fullFileName}.");
                        return;
                    }

                    var data        = source.GetData();
                    var currentHash = HashHelper.Compute(data);
                    var isModified  = StringComparer.InvariantCultureIgnoreCase.Compare(originalHash, currentHash) != 0;

                    _keyToFileName[key] = fullFileName;

                    // only load images that someone has modified!
                    if (Settings.LoadUnmodifiedTextures || isModified)
                    {
                        RegisterTranslatedImage(fullFileName, key, data, source);

                        if (!Settings.EnableSilentMode)
                        {
                            XuaLogger.AutoTranslator.Debug($"Image loaded: {fullFileName}.");
                        }
                    }
                    else
                    {
                        RegisterUntranslatedImage(key);
                        XuaLogger.AutoTranslator.Warn($"Image not loaded (unmodified): {fullFileName}.");
                    }
                }
                else
                {
                    XuaLogger.AutoTranslator.Warn($"Image not loaded (no hash): {fullFileName}.");
                }
            }
            catch (Exception e)
            {
                XuaLogger.AutoTranslator.Error(e, "An error occurred while loading texture file: " + fullFileName);
            }
        }