static void ReadJPEGImage( GenericImage<P>& image, JPEGReader* reader, int& readCount ) { CheckOpenStream( reader, "ReadImage" ); /* * The readCount thing is a trick to allow reading the same JPEG image * multiple times from the same format instance. That does not work with * jpeglib. An ugly trick, but hey, works. */ if ( readCount++ ) { AutoPointer<JPEGReader> newReader( new JPEGReader ); newReader->Open( reader->Path() ); newReader->ReadImage( image ); } else reader->ReadImage( image ); }
int main(void) { FILE *f; struct reader_t *r; f = fopen("CL_Images", "rb"); if (f == NULL) { fprintf(stderr, "Failed to open CL_Images: %s\n", strerror(errno)); return 1; } r = newReader(f); unpack(r, unpackCB); deleteReader(r); fclose(f); return 0; }
void CDPlayer::comboBoxChanged(ComboBox* comboBoxThatHasChanged) { std::unique_ptr<AudioCDReader> newReader(AudioCDReader::createReaderForCD(comboBoxThatHasChanged->getSelectedItemIndex())); // Update UI state. const bool cdPresent = newReader && newReader->isCDStillPresent(); m_playButton.setEnabled(cdPresent); m_pauseButton.setEnabled(cdPresent); m_stopButton.setEnabled(cdPresent); m_skipBackwardButton.setEnabled(cdPresent); m_skipForwardButton.setEnabled(cdPresent); #if JUCE_WINDOWS m_ejectButton.setEnabled(comboBoxThatHasChanged->getSelectedItemIndex() != -1); #endif // Clear out objects for previous CD. m_tracksTable.setModel(nullptr); m_model.release(); m_source = nullptr; m_reader.release(); // Create new objects if we have a CD. if (newReader) { newReader->refreshTrackLengths(); m_source = std::make_unique<AudioFormatReaderSource>(newReader.get(), false); m_transportSource.setSource(m_source.get(), 32768, // tells it to buffer this many samples ahead &m_thread, // this is the background thread to use for reading-ahead newReader->sampleRate); { std::unique_ptr<CDTracksModel> model = std::make_unique<CDTracksModel>(*newReader.get()); m_tracksTable.setModel(model.get()); m_model = std::move(model); } m_reader = std::move(newReader); } }
DataTargetReader DataTargetReader::CreateReaderAt(CORDB_ADDRESS remoteAddressCursor) { DataTargetReader newReader(remoteAddressCursor, m_pDataTarget, m_targetDefines, m_mdStructuresVersion); return newReader; }