示例#1
0
 internal NikonImage(int size, NikonImageType type, int number, bool isFragmentOfRawPlusJpeg)
 {
     _buffer = new byte[size];
     _type = type;
     _number = number;
     _isFragmentOfRawPlusJpeg = isFragmentOfRawPlusJpeg;
 }
示例#2
0
 internal NikonImage(int size, NikonImageType type, int number, bool isFragmentOfRawPlusJpeg)
 {
     _buffer = new byte[size];
     _type   = type;
     _number = number;
     _isFragmentOfRawPlusJpeg = isFragmentOfRawPlusJpeg;
 }
示例#3
0
        void data_DataFile(NikonObject sender, NkMAIDFileInfo fileInfo, IntPtr data)
        {
            if (fileInfo.ulStart == 0)
            {
                Debug.Assert(_currentImage == null);

                int            size   = (int)fileInfo.ulTotalLength;
                NikonImageType type   = (NikonImageType)(_currentItemId >> 27);
                int            number = (int)((_currentItemId << 8) >> 8);
                bool           isFragmentOfRawPlusJpeg = (_currentItemId & (1 << 26)) != 0;

                _currentImage = new NikonImage(size, type, number, isFragmentOfRawPlusJpeg);
            }

            Debug.Assert(_currentImage != null);

            int offset = (int)fileInfo.ulStart;
            int length = (int)fileInfo.ulLength;

            _currentImage.CopyFrom(data, offset, length);

            bool complete = (fileInfo.ulTotalLength == fileInfo.ulStart + fileInfo.ulLength);

            if (complete)
            {
                NikonImage image = _currentImage;
                _currentImage = null;

                Scheduler.Callback(new ImageReadyDelegate(OnImageReady), this, image);
            }
        }