|
It depends what you mean by "attaching." If you mean how do I write a library which doesn't require inclusion of multiple files then do what super suggested, put them all in a file called libwhatever.h and then users of your library only have to include that one file. On older systems and big projects this can slow compilation down mightily so only do it if you really need to.
However, what you should generally do is come up with minimal include files that only contain what's absolutely necessary to use that class. There's absolutely nothing wrong with users having to include multiple files to use library facilities - we do it all the time for the standard library for instance. It's not uncommon to see seven or eight standard library headers in an implementation file - one file per concept used. On the other hand if you write a class declaration and have that many includes in the header there's probably something wrong and you're heading for design coupling and build dependency hell.
"Exceptional C++" by Herb Sutter has got loads of good advice on how to write include files. Go to your local library/used technical book store/mug someone and get a copy, it's well worth the cost or prison sentence.
Cheers,
Ash
|
|
|
|
|
how to convert from wchar_t to wstring??
|
|
|
|
|
The basic_string class which constructs the wstring object has multiple overloaded constructors to do this.
To construct wstring from a single wchar_t character do the following -
wchar_t Char = L'A';
std::wstring strChar(1, Char);
Here 1 is the repeat count of Char s to be added to wstring .
To construct wstring from an array of wchar_t characters it is more straight forward -
wchar_t* Array = L"Hello";
std::wstring strArray(Array);
|
|
|
|
|
I am programming a console player that plays audio files. I have been able to write the program such that it can now play PCM .wav files. I have also programmed it such that it can decode .mp3 audio files to PCM using libmad and it plays well. I now want to the program to also play non-PCM wave files. I'm sure this will have to be decoded to PCM format but I don't know how this is done. Could anyone help me with how to do this, or a link to books or tutorials useful? Thanks in advance.
|
|
|
|
|
i remember, there is a tool called SOX, which does the conversion from non-PCM(for example, GSM) to PCM. it is a command line tool.
if you search for it, you may get it.
also you may get its open source, if you search more.
all the best.
--------------------------------------------
Suggestion to the members:
Please prefix your main thread subject with [SOLVED] if it is solved.
thanks.
chandu.
|
|
|
|
|
I just downloaded the SOX source code. Do you please remember or have a sample project that demonstrates its use? There is an example1 file in the folder but it is not documented which will make it difficult for me to understand how it is used. Thanks.
|
|
|
|
|
if you have an exe file, then this is how, it can be used from the command line.
sox nonpcm.WAV -s -r 16000 PCM.wav
let me know if you have any issues.
--------------------------------------------
Suggestion to the members:
Please prefix your main thread subject with [SOLVED] if it is solved.
thanks.
chandu.
|
|
|
|
|
I have the the intent to use it later in a GUI application after understanding its use. This will mean that I will need to understand how it works that is why I need sample applications or tutorials that explains how it is used.
|
|
|
|
|
thats what i was trying to say DAN,
you have SOX source code right, try to get the sox exe also, and use the command i have given, and test if it works for your need.
if it works, then you can understand from the src, how it is done.
all the best.
--------------------------------------------
Suggestion to the members:
Please prefix your main thread subject with [SOLVED] if it is solved.
thanks.
chandu.
|
|
|
|
|
I have the executable now which I have installed. When I tried what you told me to do, I had the following error message: "Unknown WAV file encoding <type 674f="">". As I said earlier, this WAV file is not in PCM format. Any way around this?
|
|
|
|
|
Dan_K wrote: As I said earlier, this WAV file is not in PCM format
sox donot require pcm formats as source file, to convert to PCM format.
long back, i used this exe, to convert wav files in gsm format to pcm format. iam not sure of what is the input format you are using, and if sox supports that format.
you can do the following things.
1.take a pcm file which is able to be played in a media player, and convert it to itself. i mean, pcm itself. if it works, it proves that, the exe you are holding is the right one. other wise, we will see an alternative.
2.put me a mail, attaching the sample file you are trying to convert, the sox.exe you have with you, and the source you have downloaded. i will try to help you at my best.
please find a mail in your inbox, where i stated my mail id.
--------------------------------------------
Suggestion to the members:
Please prefix your main thread subject with [SOLVED] if it is solved.
thanks.
chandu.
|
|
|
|
|
Failing an understanding of how to use the code, you could always take the approach oft taken to using ffmpeg, and just include the command line exe in your release then run it from your program, rather than the cmd line.
Dunno if you could suppress the cmd-line window from appearing when you run the program, but the question is bound to have been asked a thousand times before, so somewhere the answer lies silently in wait.
|
|
|
|
|
Are you talking about ffmpeg source code itself or the one included in SOX (which I see in the folder)? Or are they the same? I had that separately long time ago but I do not how to use it. Now I know how to decode .mp3 using libmad but I want to try non-PCM wave. I just used a HEX editor to view the non-PCM wave file and I could see that the ENCODER name is vorbis.
modified on Friday, June 11, 2010 5:45 AM
|
|
|
|
|
I use CBitmapButton in a few places in my project (MFC SDI )
CBitmapButton has a function
LoadBitmaps(
LPCTSTR lpszBitmapResource,
LPCTSTR lpszBitmapResourceSel = NULL,
LPCTSTR lpszBitmapResourceFocus = NULL,
LPCTSTR lpszBitmapResourceDisabled = NULL) where lpszBitmapResource, in my case is IDB_BITMAP1 loaded from the resource file . Can u tell me how to load this bitmaps from dll(export resources) ? i know to make a dll in mfc but only to export classes with math functions Thank u very much i would be much obliged if someoane can show me
modified on Wednesday, July 7, 2010 2:34 AM
|
|
|
|
|
Member 1925990 wrote: Can u tell me how to load this bitmaps from dll(export resources) ?
There's nice tutorial here how to use CBitmapButton class.
Member 1925990 wrote: i know to make a dll in mfc but only to export classes with math function
You could start from here.
Please ask google before posting.There's plenty of tutorials how to solve these problems.
Life is a stage and we are all actors!
|
|
|
|
|
Hi all,
I want to make an animation in which I will be able to move an object 'cube' for example along given coordinate points. All the example and sample I tried were either rotating the object or translating on given points. How can we make it move on series of points ?
Any suggestion for me to start with?
Thank you in advance
Rohit
|
|
|
|
|
translate from point A and B, then from B to C, then C to D... ?
|
|
|
|
|
thank you for your reply. But I tried to do it I was not able to update the scene .. I mean I was drawing cube at each point with all previously drawn cubes. I will post code shortly.
Thank you
|
|
|
|
|
Right before drawing the new cube, redraw the old cube using the XOR value.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Hi, David . I am a newbie for Opengl. I have just started experimenting with it.
From information I have glTranslatef function just moves the object relative to its original position. I have never worked with opengl . So I am also unaware of many of useful functions and tricks. I am working with a code ..
#include "stdafx.h"
#include <GL/glut.h>
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
float time = 0;
float x ;
void init()
{
glClearColor(0,0,0,0);
gluOrtho2D(-5,5,-5,5);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0,0);
glPushMatrix();
glRotatef(time,0,0,1);
glBegin(GL_TRIANGLES);
glVertex2f(3,-4);
glVertex2f(3.5,-3);
glVertex2f(4,-4);
glEnd();
glPopMatrix();
glColor3f(0,1,0);
glPushMatrix();
glTranslatef(x,0,0);
glBegin(GL_QUADS);
glVertex2f(-4,-4);
glVertex2f(-4,-2);
glColor3f(0,0,1);
glVertex2f(-2,-2);
glVertex2f(-2,-4);
glEnd();
glPopMatrix();
glPushMatrix();
glScalef(time/200,time/200,time/200);
glColor3f(1,0,0);
glBegin(GL_POLYGON);
glVertex2f(-2,2);
glColor3f(0,1,0);
glVertex2f(-1,3);
glColor3f(0,0,1);
glVertex2f(0,2);
glColor3f(1,0,1);
glVertex2f(-0.5,0);
glColor3f(1,1,0);
glVertex2f(-1.5,0);
glEnd();
glPopMatrix();
glFlush();
glutPostRedisplay();
}
void idle()
{ int sum = 0;
ifstream inFile;
inFile.open("C:\\Users\\RoBa\\Desktop\\test.txt");
while (inFile >> time)
{
x = time + x;
}
inFile.close();
}
void main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(10,50);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutCreateWindow("Lesson 3");
init();
glutDisplayFunc(display);
glutIdleFunc(idle);
glutMainLoop();
}
test.txt is a file in which i have written many float values . Now I am trying to write code so that objects (rectangle for instance) will trace these points with changing 'x' coordinate with other coordinates constant.
Thank you in advance for help !
Rohit
|
|
|
|
|
After studying glTranslatef() function I have made few modifications in the code as..
<code>
// prayatnaopengl2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <GL/glut.h>//include our glut library
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
float time = 0;//(NEW) variable to record the how much time has passed
float x ;
void init()
{
glClearColor(0,0,0,0);
gluOrtho2D(-5,5,-5,5);//Setup our viewing area
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
//////////////////////////////////////////////////////////////////////////////////
float diff = 0;
//float x;
ifstream inFile;
inFile.open("C:\\Users\\RoBa\\Desktop\\test.txt");
while (inFile >> x)
{
//sum = sum + x;
if (x>0)
{
diff = x - diff;
diff = x;
glTranslatef(diff,0,0);
glutSolidCube(1.0f);
glutPostRedisplay();
}
else
{
diff = x + diff;
diff = -x;
glTranslatef(diff,0,0);
glutSolidCube(1.0f);
glutPostRedisplay();
}
}
inFile.close();
glFlush();
glutPostRedisplay();//refresh the screen
}
void main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitWindowSize(800,600);
glutInitWindowPosition(10,50);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutCreateWindow("Lesson 3");
init();
glutDisplayFunc(display);
//glutIdleFunc(idle);//(NEW) calls our idle function
glutMainLoop();
}
</code>
Can this be a method for animation? I am trying to use such kind of animation for real time animation project . A code is been created which gives coordinates and I want to move object on those points.
Thank you in advance
Rohit
|
|
|
|
|
Hi David I have stopped using gluTranslatef() now I am working with glLookAt(). I read coordinates from the text file and assign those to glLookAt() function. I know my code to read the coordinates is working fine but I cant see my camera moving on those points . "Rather my computer shows a transparent window " What can be possible reason for that ? I am not getting why this happens I doubt it's because less graphic capability ...
But when I give a general for() loop to change z coordinate just to test It Works fine
I don't know how to make it work. Can you help me to solve this issue ?!
I am posting my code
#include <math.h>
#include <GL/glut.h>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
#include <dos.h>
#include <windows.h>
using namespace std;
float angle=0.0,deltaAngle = 0.0,ratio;
float x=0.0f,y=1.75f,z=5.0f;
float lx=0.0f,ly=0.0f,lz=-1.0f;
GLint snowman_display_list;
int deltaMove = 0;
float a = 0.0f;
int b = 0;
void changeSize(int w, int h)
{
if(h == 0)
h = 1;
ratio = 1.0f * w / h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(0, 0, w, h);
gluPerspective(45,ratio,1,1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void renderScene(void)
{
FILE *file;
float numbers[3];
float rx,ry,rz;
int i;
file = fopen("C:\\Users\\RoBa\\Desktop\\test.txt", "r");
while(feof(file)== NULL)
{
fscanf(file, "%f %f %f ", &numbers[b],&numbers[b+1], &numbers[b+2]);
rx = (numbers[b])/10;
ry = (numbers[b+1])/10;
rz = (numbers[b+2])/10;
cout<<rx<<endl;
cout<<ry<<endl;
cout<<rz<<endl;
glLoadIdentity();
gluLookAt(rx , ry , rz , 0.0f,0.0f,0.f,0.0f,1.0f,0.0f);
}
fclose(file);
cout<<rx<<endl;
cout<<ry<<endl;
cout<<rz<<endl;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutWireCube(2.0f);
glutSwapBuffers();
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(640,360);
glutCreateWindow("My animation");
glutDisplayFunc(renderScene);
glutReshapeFunc(changeSize);
glutMainLoop();
return(0);
}
Thank you
Rohit
|
|
|
|
|
Is there any code review tool for VC++?
|
|
|
|
|
Not sure what you mean by a "Code review tool" but generally I find a text editor, eyeballs and a knowledge of the idioms of the programming language handy.
Do you want something like lint that does a static analysis of the code? If so then have a look at PC-Lint and, if you really have to run it from inside Visual Studio, Visual Lint (IIRC) from Riverblade software.
Cheers,
Ash
modified on Thursday, June 10, 2010 8:34 AM
|
|
|
|
|
the typical tool is something that can do a batch 'diff'. something like BeyondCompare.
|
|
|
|
|