Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2015, 17:08   #21
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

продолжение одной и той же функции вырезка из libjpeg

Код:
#define _CONST_BITS 14
	static const INT16 aanscales[DCTSIZE2] = {
	  /* precomputed values scaled up by 14 bits */
	  16384, 22725, 21407, 19266, 16384, 12873,  8867,  4520,
	  22725, 31521, 29692, 26722, 22725, 17855, 12299,  6270,
	  21407, 29692, 27969, 25172, 21407, 16819, 11585,  5906,
	  19266, 26722, 25172, 22654, 19266, 15137, 10426,  5315,
	  16384, 22725, 21407, 19266, 16384, 12873,  8867,  4520,
	  12873, 17855, 16819, 15137, 12873, 10114,  6967,  3552,
	   8867, 12299, 11585, 10426,  8867,  6967,  4799,  2446,
	   4520,  6270,  5906,  5315,  4520,  3552,  2446,  1247
	};
	SHIFT_TEMPS

	if (fdct->divisors[qtblno] == NULL) {
	  fdct->divisors[qtblno] = (DCTELEM *)
	    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
					DCTSIZE2 * SIZEOF(DCTELEM));
	}
	dtbl = fdct->divisors[qtblno];
	for (i = 0; i < DCTSIZE2; i++) {
	  dtbl[i] = (DCTELEM)
	    DESCALE(MULTIPLY16V16((INT32) qtbl->quantval[i],
				  (INT32) aanscales[i]),
		    _CONST_BITS-3);
	}
      }
      fdct->pub.forward_DCT[ci] = forward_DCT;
      break;
#endif
#ifdef DCT_FLOAT_SUPPORTED
    case JDCT_FLOAT:
      {
	/* For float AA&N IDCT method, divisors are equal to quantization
	 * coefficients scaled by scalefactor[row]*scalefactor[col], where
	 *   scalefactor[0] = 1
	 *   scalefactor[k] = cos(k*PI/16) * sqrt(2)    for k=1..7
	 * We apply a further scale factor of 8.
	 * What's actually stored is 1/divisor so that the inner loop can
	 * use a multiplication rather than a division.
	 */
	FAST_FLOAT * fdtbl;
	int row, col;
	static const double aanscalefactor[DCTSIZE] = {
	  1.0, 1.387039845, 1.306562965, 1.175875602,
	  1.0, 0.785694958, 0.541196100, 0.275899379
	};

	if (fdct->float_divisors[qtblno] == NULL) {
	  fdct->float_divisors[qtblno] = (FAST_FLOAT *)
	    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
					DCTSIZE2 * SIZEOF(FAST_FLOAT));
	}
	fdtbl = fdct->float_divisors[qtblno];
	i = 0;
	for (row = 0; row < DCTSIZE; row++) {
	  for (col = 0; col < DCTSIZE; col++) {
	    fdtbl[i] = (FAST_FLOAT)
	      (1.0 / (((double) qtbl->quantval[i] *
		       aanscalefactor[row] * aanscalefactor[col] * 8.0)));
	    i++;
	  }
	}
      }
      fdct->pub.forward_DCT[ci] = forward_DCT_float;
      break;
#endif
    default:
      ERREXIT(cinfo, JERR_NOT_COMPILED);
      break;
    }
  }
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 17:42   #22
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну да, крутой аргумент, нашел говнокод в каком-нибудь проекте с 25-летней историей (еще и на более низкоуровневом С, а не С++) — значит всем и везде так надо писать, особенно начиная с чистого листа, и в теме для "новичков".
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.02.2015, 17:45   #23
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну да, крутой аргумент, нашел говнокод в каком-нибудь проекте с 25-летней историей (еще и на более низкоуровневом С, а не С++) — значит всем и везде так надо писать, особенно начиная с чистого листа, и в теме для "новичков".
Это не г-код.
Это юниксовая библиотека для обработки jpeg которая используется в таких программах как Adobe Photoshop и в программах Microsoft Photo Editor. Этот код был написал группой по разработке jpeg библиотек. Аналогов не предвидится. Так как через эту библиотеку делается все что связано с форматом JPEG

Этот код используется в Adobe Photoshop., причем сообщение об этом давалось в заставочном окне программы
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 17:54   #24
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Я в курсе что это, причем тут это все? Я о том, что не надо бездумно подражать этому.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.02.2015, 10:18   #25
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Сборка проекта
Запуск командной строки в ОС windows "cmd"
В командной строке для сборки набирается "cl имя_файла"


Переменные среды прописываются:
Панель управления - Система и безопасность - Система - Изменить параметры
вкладка Дополнительно - Переменные среды

Для сборки необходимо прописать переменные среды:
Переменная среды PATH
В данную переменную прописываетсь путь к компилятору (cl.exe) и к компоновщику (link.exe)

Пример: C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE;C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin;C:\Program Files\Microsoft Visual Studio 10.0\VC\bin;C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE;C:\Windows\Microso ft.NET\Framework;C:\Windows\Microso ft.NET\Framework\v1.0.3705;C:\Windo ws\Microsoft.NET\Framework\v1.1.432 2;C:\Windows\Microsoft.NET\Framewor k\v2.0.50727;C:\Windows\Microsoft.N ET\Framework\v3.0\;C:\Windows\Micro soft.NET\Framework\v3.0\WPF;C:\Wind ows\Microsoft.NET\Framework\v3.0\Wi ndows Communication Foundation;C:\Windows\Microsoft.NET \Framework\v3.5;C:\DDK\bin;C:\DDK\b in\x86;C:\DDK\bin\x86\x86;C:\DDK\De bug\Win7\i386;C:\DDK\Debuggers;C:\t \graphviz\bin;C:\t\htmlhelp;C:\t\mi ngw\bin;C:\Perl\bin;C:\t\doxygen\bi n;C:\DDK\Debuggers\winext;C:\Progra m Files\NVIDIA Corporation\Cg\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin


Переменная среды INCLUDE
В данную переменную среды прописывается путь к заголовочным файлам языков C/C++,
которые имеют расширение .h
В переменную можно прописывать файлы из любых директорий,
требующихся компилятору для сборки проекта

Пример: C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include;C:\Progr am Files\Microsoft Visual Studio 10.0\VC\include;C:\DDK\inc\api;C:\D DK\inc\atl71;C:\DDK\inc\crt;C:\DDK\ inc\ddk;C:\DDK\inc\mfc42;C:\DDK\inc \wdf\kmdf\1.9;C:\DDK\inc\wdf\umdf\1 .9;C:\Program Files\Microsoft DirectX SDK (June 2010)\Include;C:\Program Files\Microsoft DirectX SDK (June 2010)\Samples\C++\DXUT\Core;C:\Prog ram Files\Microsoft DirectX SDK (June 2010)\Samples\C++\DXUT\Optional;C:\ Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:\t\alle gro\include\;C:\t\poco-1.4.5\XML\include;C:\t\poco-1.4.5\Foundation\include\;C:\t\dx8\ include;C:\DDK\inc\mfc42;

Переменная среды LIB
В данную переменную среды прописывается путь к статическим библиотекам для компоновки
которые имеют расширение lib
В переменную можно прописывать файлы из любых директорий,
требующихся компоновщику для сборки проекта

Пример: C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib;C:\Program Files\Microsoft Visual Studio 10.0\VC\lib;C:\DDK\lib\ATL\i386;C:\ DDK\lib\Crt\i386;C:\DDK\lib\Mfc\i38 6;C:\DDK\lib\wdf\kmdf\i386\1.9;C:\D DK\lib\win7\i386;C:\DDK\lib\wlh\i38 6;C:\DDK\lib\wnet\i386;C:\DDK\lib\w xp\i386;C:\Program Files\Microsoft DirectX SDK (June 2010)\Lib\x86;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\lib\Win32;C:\t\al legro\VCBuild\lib\RelWithDebInfo;C: \t\poco-1.4.5\lib;C:\t\dx8\lib;
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 19.02.2015, 15:54   #26
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А можно вызвать
"%VS100COMNTOOLS%\vsvars32.bat"
Это пропишет пути к компилятору и к установленным SDK

VS100COMNTOOLS это для 2010 студии, для других версий меняется номер версии в переменной окружения.
Из cmd.exe можно вызвать
set VS
и посмотреть что именно установлено.
waleri вне форума Ответить с цитированием
Старый 19.02.2015, 18:25   #27
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
А можно вызвать
"%VS100COMNTOOLS%\vsvars32.bat"
Это пропишет пути к компилятору и к установленным SDK
Вызов vsvars32.bat не всегда прописывает пути. К тому же заголовочные файлы из других директорий нужно отдельно указывать.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 19.02.2015, 21:13   #28
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

challengerr
Да ты прав, большие функции - это хорошо.
Статика и константы без имен - в этом проекте тоже на полную катушку используются - значит это тоже хорошо.
Месиво из свича и директив условной компиляции - чудесно.
Всегда так делай.

Последний раз редактировалось rrrFer; 19.02.2015 в 21:21.
rrrFer вне форума Ответить с цитированием
Старый 13.03.2018, 11:35   #29
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Вернулся в эту тему за кодом, чтобы перенести его в Linux, и перенес, и работает.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 13.03.2018, 22:22   #30
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Ну, фиг знает.

Если уж делать тему "основы C++ для начинающих", стоит хотя бы форматирование кода произвести.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инструкция по созданию заготовки для 2D игр (для начинающих) 8Observer8 Gamedev - cоздание игр: Unity, OpenGL, DirectX 31 20.03.2023 02:01
C++ для начинающих a_Alise Помощь студентам 2 27.03.2016 10:00
Основы C++ для начинающих от 8Observer8 8Observer8 Общие вопросы C/C++ 67 08.07.2015 10:17
С++ для начинающих Maxim1 Общие вопросы C/C++ 10 31.05.2010 00:22