Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Мини субд для сохранения координатов элементов 3D графики. / 6 сообщений из 6, страница 1 из 1
14.01.2013, 09:07
    #38108774
manking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мини субд для сохранения координатов элементов 3D графики.
Есть ли быстрое решение для текущей задачи?

Описание:
Сейчас координаты gui вписаны прямо в программу.
например
draw_image(X=50 , Y = 20 , id="картинка часы")
draw_text(X=70 , Y = 20 , id="текущее время")

Есть идея сделать систему "то что вижу, то и происходит" визуальный редактор.

Нажимаю F5, перетаскиваю изображение id="картинка часы" вниз экрана.
Теперь X==250 Y==500.

Вот теперь мне нужно вызвать функцию мини субд
СУБД writer;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
writer.save_disc(X=250 Y=500. , id="картинка часы");

Далее  когда нужно нарисовать объект
я проверяю например так:

if(writer.has_data( "картинка часы")==true)
{
draw_image(writer.get_data( "картинка часы")->X , get_data( "картинка часы")->Y , id="картинка часы");
}
else{
draw_image(X=50 , Y = 20 , id="картинка часы");
}



Важно чтобы эта субд поддерживала автоматическую или удобную систему резервного копирования для сохранности данных и возможности поиска по архиву.
Я думаю нечто подобное точно должно быть(boost??).
Ооооооочень не хочется с нуля писать.
...
Рейтинг: 0 / 0
14.01.2013, 10:44
    #38108851
imobile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мини субд для сохранения координатов элементов 3D графики.
mankingЕсть ли быстрое решение для текущей задачи?

Описание:
Сейчас координаты gui вписаны прямо в программу.
например
draw_image(X=50 , Y = 20 , id="картинка часы")
draw_text(X=70 , Y = 20 , id="текущее время")

Есть идея сделать систему "то что вижу, то и происходит" визуальный редактор.

Нажимаю F5, перетаскиваю изображение id="картинка часы" вниз экрана.
Теперь X==250 Y==500.

Вот теперь мне нужно вызвать функцию мини субд
СУБД writer;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
writer.save_disc(X=250 Y=500. , id="картинка часы");

Далее  когда нужно нарисовать объект
я проверяю например так:

if(writer.has_data( "картинка часы")==true)
{
draw_image(writer.get_data( "картинка часы")->X , get_data( "картинка часы")->Y , id="картинка часы");
}
else{
draw_image(X=50 , Y = 20 , id="картинка часы");
}

Наверное SQLight подойдет. Песплатна с исходниками.

Важно чтобы эта субд поддерживала автоматическую или удобную систему резервного копирования для сохранности данных и возможности поиска по архиву.
Я думаю нечто подобное точно должно быть(boost??).
Ооооооочень не хочется с нуля писать.
...
Рейтинг: 0 / 0
14.01.2013, 12:18
    #38108993
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мини субд для сохранения координатов элементов 3D графики.
On 01/14/2013 10:07 AM, manking wrote:

> Есть ли быстрое решение для текущей задачи?

Подозреваю, что эта мини-СУБД есть ни что иное, как
std::map< std::string, void* >


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.01.2013, 14:38
    #38109273
manking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мини субд для сохранения координатов элементов 3D графики.
MasterZivПодозреваю, что эта мини-СУБД есть ни что иное, как
std::map< std::string, void* >


Ну да.

Сейчас нашел парсер xml. Сама работа с записью структуры данных в формат xml быстрая. Но придется писать создание каталогов по дате, поиск последней базы , проверку на безопасную работу из разных потоков и т.д.

http://www.firstobject.com/dn_markup.htm
CMarkup

То есть мне нужен конкретный прикладной инструмент для
хранения уникальных секций, в которых есть переменные и значения, на диске.
То есть подошел бы формат
std::map<std::string , std::map<std::string , std::string>> data;
если бы мог хранить данные на диске самостоятельно.

C sqlite и другой полноценной субд много возни.
...
Рейтинг: 0 / 0
14.01.2013, 14:50
    #38109300
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мини субд для сохранения координатов элементов 3D графики.
mankingC sqlite и другой полноценной субд много возни.
Просто с твоим примером возня перетекает из сферы SQL в обилие if(..) else ...;
Думал об этом?
...
Рейтинг: 0 / 0
14.01.2013, 15:11
    #38109385
manking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мини субд для сохранения координатов элементов 3D графики.
maytonmankingC sqlite и другой полноценной субд много возни.
Просто с твоим примером возня перетекает из сферы SQL в обилие if(..) else ...;
Думал об этом?

Код: plaintext
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.
Вот примерный пример как можно было бы использовать map в данном случаи.

// здесь он создаётся в памяти и пуст, а мне нужно чтобы он восстановил старое состояние
std::map< std::string , std::map<std::string , std::string> > глобальная_data;




void draw_image(int X , int Y , std::string id)
{

// здесь проверка существования настроек для этого id
if(глобальная_data.count(id)>0)
{
X = глобальная_data[id]["X"];
Y = глобальная_data[id]["Y"];
}
else
{
глобальная_data[id]["X"]=X;
глобальная_data[id]["Y"]=Y;
}

drawing
...
drawing

}



void изменить_положение_картинки(int X , int Y , std::string id)
{
глобальная_data[id]["X"]=X;
глобальная_data[id]["Y"]=Y;
}


int main()
{


// основной цикл
while(5>3)
{

...
draw_image(100 , 200 , "картинка 1");
draw_image(100 , 400 , "картинка 2");
...


// на 500 цикле перемещаем изображение
if(цикл == 500)
{
изменить_положение_картинки(120 , 700 , "картинка 1");
}

};
};
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Мини субд для сохранения координатов элементов 3D графики. / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]