summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiemm/oimagezoomer.cpp2
-rw-r--r--libopie2/opiemm/osoundsystem.cpp2
2 files changed, 3 insertions, 1 deletions
diff --git a/libopie2/opiemm/oimagezoomer.cpp b/libopie2/opiemm/oimagezoomer.cpp
index d1eec67..b7ef238 100644
--- a/libopie2/opiemm/oimagezoomer.cpp
+++ b/libopie2/opiemm/oimagezoomer.cpp
@@ -9,225 +9,225 @@
#include <qpoint.h>
#include <qsize.h>
namespace Opie {
namespace MM {
/**
* \brief The most simple c'tor
* The main c'tor. You still need to set a QPixmap/QIMage,
* setImageSize,setViewPortSize,setVisiblePoint
*
* @param parent The parent widget
* @param name A name for this widget
* @param fl The widget flags
*
*/
OImageZoomer::OImageZoomer( QWidget* parent, const char* name, WFlags fl )
: QFrame( parent, name, fl ) {
init();
}
/**
* \brief This c'tor takes a QPixmap additional
*
* You initially set the QPixmap but you still need to provide
* the additional data to make this widget useful
*
* @param pix A Pixmap it'll be converted to a QImage later!
* @param par The parent widget
* @param name The name of this widget
* @param fl The widget flags
*/
OImageZoomer::OImageZoomer( const QPixmap& pix, QWidget* par, const char* name, WFlags fl )
: QFrame( par, name, fl ) {
init();
setImage( pix );
}
/**
* \brief This c'tor takes a QImage instead
* You just provide a QImage which is saved. It behaves the same as the others.
*
* @param img A Image which will be used for the zoomer content
* @param par The parent of the widget
* @param name The name of the widget
* @param fl The widgets flags
*/
OImageZoomer::OImageZoomer( const QImage& img, QWidget* par, const char* name, WFlags fl)
: QFrame( par, name, fl ) {
init();
setImage( img );
}
/**
* \brief overloaded c'tor
*
* This differs only in the arguments it takes
*
*
* @param pSize The size of the Page you show
* @param vSize The size of the viewport. The size of the visible part of the widget
* @param par The parent of the widget
* @param name The name
* @param fl The window flags
*/
OImageZoomer::OImageZoomer( const QSize& pSize, const QSize& vSize, QWidget* par,
const char* name, WFlags fl )
: QFrame( par, name, fl ), m_imgSize( pSize ),m_visSize( vSize ) {
init();
}
/**
* d'tor
*/
OImageZoomer::~OImageZoomer() {
}
void OImageZoomer::init() {
m_mevent = false;
setFrameStyle( Panel | Sunken );
}
/**
* \brief set the page/image size
* Tell us the QSize of the Data you show to the user. We need this
* to do the calculations
*
* @param size The size of the stuff you want to zoom on
*/
void OImageZoomer::setImageSize( const QSize& size ) {
m_imgSize = size;
repaint();
}
/**
* \brief Set the size of the viewport
* Tell us the QSize of the viewport. The viewport is the part
* of the widget which is exposed on the screen
*
* @param size Te size of the viewport
*
* @see QScrollView::viewport()
*/
void OImageZoomer::setViewPortSize( const QSize& size ) {
m_visSize = size;
repaint();
}
/**
* \brief the point in the topleft corner which is currently visible
* Set the visible point. This most of the times relate to QScrollView::contentsX()
* and QScrollView::contentsY()
*
* @see setVisiblePoint(int,int)
*/
void OImageZoomer::setVisiblePoint( const QPoint& pt ) {
m_visPt = pt;
repaint();
}
/**
* Set the Image. The image will be resized on resizeEvent
* and it'll set the QPixmap background
*
* @param img The image will be stored internally and used as the background
*/
void OImageZoomer::setImage( const QImage& img) {
m_img = img;
resizeEvent( 0 );
repaint();
}
/**
* overloaded function it calls the QImage version
*/
void OImageZoomer::setImage( const QPixmap& pix) {
setImage( pix.convertToImage() );
}
void OImageZoomer::resizeEvent( QResizeEvent* ev ) {
QFrame::resizeEvent( ev );
setBackgroundOrigin( QWidget::WidgetOrigin );
// TODO Qt3 use PalettePixmap and use size
QPixmap pix; pix.convertFromImage( m_img.smoothScale( size().width(), size().height() ) );
setBackgroundPixmap( pix);
}
void OImageZoomer::drawContents( QPainter* p ) {
/*
* if the page size
*/
if ( m_imgSize.isEmpty() )
return;
/*
* paint a red rect which represents the visible size
*
* We need to recalculate x,y and width and height of the
* rect. So image size relates to contentRect
*
*/
QRect c( contentsRect() );
p->setPen( Qt::red );
/*
* the contentRect is set equal to the size of the image
* Rect/Original = NewRectORWidth/OriginalVisibleStuff and then simply we
* need to add the c.y/x due usage of QFrame
* For x and y we use the visiblePoint
* For height and width we use the size of the viewport
* if width/height would be bigger than our widget we use this width/height
*
*/
int len = m_imgSize.width();
int x = (c.width()*m_visPt.x())/len + c.x();
int w = (c.width()*m_visSize.width() )/len + c.x();
if ( w > c.width() ) w = c.width();
len = m_imgSize.height();
int y = (c.height()*m_visPt.y() )/len + c.y();
int h = (c.height()*m_visSize.height() )/len + c.y();
if ( h > c.height() ) h = c.height();
p->drawRect( x, y, w, h );
}
-void OImageZoomer::mousePressEvent( QMouseEvent*ev) {
+void OImageZoomer::mousePressEvent( QMouseEvent*) {
m_mouseX = m_mouseY = -1;
m_mevent = true;
}
void OImageZoomer::mouseReleaseEvent( QMouseEvent*ev) {
if (!m_mevent) return;
int mx, my;
mx = ev->x();
my = ev->y();
int diffx = (mx) * m_imgSize.width() / width();
int diffy = (my) * m_imgSize.height() / height();
emit zoomArea(diffx,diffy);
}
void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) {
int mx, my;
mx = ev->x();
my = ev->y();
if ( m_mouseX != -1 && m_mouseY != -1 ) {
m_mevent = false;
int diffx = ( mx - m_mouseX ) * m_imgSize.width() / width();
int diffy = ( my - m_mouseY ) * m_imgSize.height() / height();
emit zoomAreaRel( diffx, diffy );
}
m_mouseX = mx;
m_mouseY = my;
}
}
}
diff --git a/libopie2/opiemm/osoundsystem.cpp b/libopie2/opiemm/osoundsystem.cpp
index 2b17230..763ff65 100644
--- a/libopie2/opiemm/osoundsystem.cpp
+++ b/libopie2/opiemm/osoundsystem.cpp
@@ -70,246 +70,248 @@ void OSoundSystem::synchronize()
QString str;
QFile f( "/dev/sound" );
bool hasFile = f.open( IO_ReadOnly );
if ( !hasFile )
{
odebug << "OSoundSystem: /dev/sound not existing. No sound devices available" << oendl;
return;
}
QTextStream s( &f );
s.readLine();
s.readLine();
while ( !s.atEnd() )
{
s >> str;
str.truncate( str.find( ':' ) );
odebug << "OSoundSystem: found interface '" << str << "'" << oendl;
OAudioInterface* iface;
iface = new OAudioInterface( this, (const char*) str );
_interfaces.insert( str, iface );
s.readLine();
}
*/
}
int OSoundSystem::count() const
{
return _interfaces.count();
}
OSoundCard* OSoundSystem::card( const QString& iface ) const
{
return _interfaces[iface];
}
OSoundSystem* OSoundSystem::instance()
{
if ( !_instance ) _instance = new OSoundSystem();
return _instance;
}
OSoundSystem::CardIterator OSoundSystem::iterator() const
{
return OSoundSystem::CardIterator( _interfaces );
}
/*======================================================================================
* OSoundCard
*======================================================================================*/
OSoundCard::OSoundCard( QObject* parent, const char* name )
:QObject( parent, name ), _audio( 0 ), _mixer( 0 )
{
odebug << "OSoundCard::OSoundCard()" << oendl;
init();
}
OSoundCard::~OSoundCard()
{
}
void OSoundCard::init()
{
_audio = new OAudioInterface( this, "/dev/dsp" );
_mixer = new OMixerInterface( this, "/dev/mixer" );
}
/*======================================================================================
* OAudioInterface
*======================================================================================*/
OAudioInterface::OAudioInterface( QObject* parent, const char* name )
:QObject( parent, name ), _sfd(0)
{
odebug << "OAudioInterface::OAudioInterface()" << oendl;
init();
}
OAudioInterface::~OAudioInterface()
{
}
void OAudioInterface::init()
{
}
/*======================================================================================
* OMixerInterface
*======================================================================================*/
OMixerInterface::OMixerInterface( QObject* parent, const char* name )
:QObject( parent, name )
{
odebug << "OMixerInterface::OMixerInterface()" << oendl;
init();
}
OMixerInterface::~OMixerInterface()
{
}
void OMixerInterface::init()
{
// open the device
_fd = ::open( name(), O_RDWR );
if ( _fd == -1 )
{
owarn << "OMixerInterface::init(): Can't open mixer." << oendl;
return;
}
// construct the device capabilities
int devmask = 0;
if ( ioctl( _fd, SOUND_MIXER_READ_DEVMASK, &devmask ) != -1 )
{
if ( devmask & ( 1 << SOUND_MIXER_VOLUME ) ) _channels.insert( "PlayVolume", SOUND_MIXER_VOLUME );
if ( devmask & ( 1 << SOUND_MIXER_BASS ) ) _channels.insert( "PlayBass", SOUND_MIXER_BASS );
if ( devmask & ( 1 << SOUND_MIXER_TREBLE ) ) _channels.insert( "PlayTreble", SOUND_MIXER_TREBLE );
if ( devmask & ( 1 << SOUND_MIXER_SYNTH ) ) _channels.insert( "PlaySynth", SOUND_MIXER_SYNTH );
if ( devmask & ( 1 << SOUND_MIXER_PCM ) ) _channels.insert( "PlayPCM", SOUND_MIXER_PCM );
if ( devmask & ( 1 << SOUND_MIXER_SPEAKER ) ) _channels.insert( "PlaySpeaker", SOUND_MIXER_SPEAKER );
if ( devmask & ( 1 << SOUND_MIXER_LINE ) ) _channels.insert( "PlayLine", SOUND_MIXER_LINE );
if ( devmask & ( 1 << SOUND_MIXER_MIC ) ) _channels.insert( "PlayMic", SOUND_MIXER_MIC );
if ( devmask & ( 1 << SOUND_MIXER_CD ) ) _channels.insert( "PlayCD", SOUND_MIXER_CD );
if ( devmask & ( 1 << SOUND_MIXER_IMIX ) ) _channels.insert( "PlayInputMix", SOUND_MIXER_IMIX );
if ( devmask & ( 1 << SOUND_MIXER_ALTPCM ) ) _channels.insert( "PlayAltPCM", SOUND_MIXER_ALTPCM );
if ( devmask & ( 1 << SOUND_MIXER_RECLEV ) ) _channels.insert( "PlayRecord", SOUND_MIXER_RECLEV );
if ( devmask & ( 1 << SOUND_MIXER_IGAIN ) ) _channels.insert( "PlayInputGain", SOUND_MIXER_IGAIN );
if ( devmask & ( 1 << SOUND_MIXER_OGAIN ) ) _channels.insert( "PlayOutputGain", SOUND_MIXER_OGAIN );
//odebug << "devmask available and constructed." << oendl;
}
devmask = 0;
if ( ioctl( _fd, SOUND_MIXER_READ_RECMASK, &devmask ) != -1 )
{
if ( devmask & ( 1 << SOUND_MIXER_VOLUME ) ) _channels.insert( "RecVolume", SOUND_MIXER_VOLUME );
if ( devmask & ( 1 << SOUND_MIXER_BASS ) ) _channels.insert( "RecBass", SOUND_MIXER_BASS );
if ( devmask & ( 1 << SOUND_MIXER_TREBLE ) ) _channels.insert( "RecTreble", SOUND_MIXER_TREBLE );
if ( devmask & ( 1 << SOUND_MIXER_SYNTH ) ) _channels.insert( "RecSynth", SOUND_MIXER_SYNTH );
if ( devmask & ( 1 << SOUND_MIXER_PCM ) ) _channels.insert( "RecPCM", SOUND_MIXER_PCM );
if ( devmask & ( 1 << SOUND_MIXER_SPEAKER ) ) _channels.insert( "RecSpeaker", SOUND_MIXER_SPEAKER );
if ( devmask & ( 1 << SOUND_MIXER_LINE ) ) _channels.insert( "RecLine", SOUND_MIXER_LINE );
if ( devmask & ( 1 << SOUND_MIXER_MIC ) ) _channels.insert( "RecMic", SOUND_MIXER_MIC );
if ( devmask & ( 1 << SOUND_MIXER_CD ) ) _channels.insert( "RecCD", SOUND_MIXER_CD );
if ( devmask & ( 1 << SOUND_MIXER_IMIX ) ) _channels.insert( "RecInputMix", SOUND_MIXER_IMIX );
if ( devmask & ( 1 << SOUND_MIXER_ALTPCM ) ) _channels.insert( "RecAltPCM", SOUND_MIXER_ALTPCM );
if ( devmask & ( 1 << SOUND_MIXER_RECLEV ) ) _channels.insert( "RecRecord", SOUND_MIXER_RECLEV );
if ( devmask & ( 1 << SOUND_MIXER_IGAIN ) ) _channels.insert( "RecInputGain", SOUND_MIXER_IGAIN );
if ( devmask & ( 1 << SOUND_MIXER_OGAIN ) ) _channels.insert( "RecOutputGain", SOUND_MIXER_OGAIN );
//odebug << "recmask available and constructed." << oendl;
}
/* ChannelIterator it;
for ( it = _channels.begin(); it != _channels.end(); ++it )
{
odebug << "Channel " << it.key() << " available (bit " << it.data() << ")" << oendl;
odebug << " +--- Volume: " << volume( it.key() ) & 0xff << " | " << volume( it.key() ) >> 8 << "" << oendl;
}
*/
}
QStringList OMixerInterface::allChannels() const
{
ChannelIterator it = _channels.begin();
QStringList channels;
while ( it != _channels.end() )
{
channels += it.key();
it++;
}
return channels;
}
QStringList OMixerInterface::recChannels() const
{
owarn << "NYI" << oendl;
+ return QStringList();
}
QStringList OMixerInterface::playChannels() const
{
owarn << "NYI" << oendl;
+ return QStringList();
}
bool OMixerInterface::hasChannel( const QString& channel )
{
return _channels.contains( channel );
}
void OMixerInterface::setVolume( const QString& channel, int left, int right )
{
int volume = left;
volume |= ( right == -1 ) ? left << 8 : right << 8;
if ( _channels.contains( channel ) )
{
int result = ioctl( _fd, MIXER_WRITE( _channels[channel] ), &volume );
if ( result == -1 )
{
owarn << "Can't set volume: " << strerror( errno ) << oendl;
}
else
{
if ( result & 0xff != left )
{
owarn << "Device adjusted volume from " << left << " to " << (result & 0xff) << oendl;
}
}
}
}
int OMixerInterface::volume( const QString& channel ) const
{
int volume;
if ( _channels.contains( channel ) )
{
if ( ioctl( _fd, MIXER_READ( _channels[channel] ), &volume ) == -1 )
{
owarn << "Can't get volume: " << strerror( errno ) << oendl;
}
else return volume;
}
return -1;
}