1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
/* Copyright (C) 2000-2003 Damir Zucic */
/*=============================================================================
ex_trans_steps.c
Purpose:
Extract translation steps (five doubles) from a string.
Input:
(1) Pointer to ConfigS structure, where values will be stored.
(2) Input string pointer.
Output:
Return value.
Return value:
(1) Positive on success.
(2) Negative on failure.
========includes:============================================================*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#include <X11/Xatom.h>
#include "defines.h"
#include "typedefs.h"
/*======extract translation steps from a string:=============================*/
int ExtractTranslationSteps_ (ConfigS *configSP, char *sP)
{
char *P0, *P1;
int n;
double d1, d2, d3, d4, d5;
/* Colon should be separator: */
if ((P0 = strstr (sP, ":")) == NULL) P0 = sP;
/* Replace each non-numeric character (except */
/* minus sign and decimal point) with space: */
P1 = P0;
while ((n = *P1++) != '\0')
{
if (!isdigit (n) && (n != '-') && (n != '.')) *(P1 - 1) = ' ';
}
/* Try to read five doubles: */
if (sscanf (P0, "%lf %lf %lf %lf %lf", &d1, &d2, &d3, &d4, &d5) != 5)
{
return -1;
}
/* Copy translation steps to ConfigS: */
configSP->translation_stepA[0] = d1;
configSP->translation_stepA[1] = d2;
configSP->translation_stepA[2] = d3;
configSP->translation_stepA[3] = d4;
configSP->translation_stepA[4] = d5;
/* If everything worked fine, return positive number: */
return 1;
}
/*===========================================================================*/
|