![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#61
|
|||
|
|||
|
Цитата:
|
|
#62
|
|||
|
|||
|
Цитата:
1. Ну как-то слабо шевелится... Пока в основном работет Феникс, да еще один собуствующий. 2. Да, проект открыт для всех желающих. Пока ничего лучшего не придумали, но для формирования и слаживания команды и это сойдет. 3. Нет, не из Владивостока. Цитата:
Мысль была такая, что некоторые форматы, более сложные, чем просто текст в разных вариантах, вынести в доп. модули. Например, формат с шифрованием. ДА, НАРОД!!! Забыл совсем сказать. Менеджер форматтеров должен помнить формат загруженногго файла и иметь 2 метода сохранения: сохраниение в исходном формате и сохранение с перекодировкой. Еще бы хорошо сделать загрузку так же, т.е. загрузку в формате по автоопределению и загрузку в указанном формате. И еще одно задание. Нужно попробовать разобраться, как вставить свой контрол в стандартные диалоги Load и Save. Нам нужен ComboBox там (точнее нужеы будут 2 в перспективе плюс кнопка своя. но один - это минимум). То, что это точно можно сделать - зуб даю. Если никто не возьмется, то я сам этим вопросом займусь. |
|
#63
|
||||
|
||||
|
Запоминать легко. Про выбор - это да, можно так сделать:
1. В диалоге открытия, есть комбобокс со списком кодировок, и первый пункт - "Автоопределение". 2. В диалоге сохранения, то же самое, но автоматически подставляется выбранная при открытии кодировка. Если документ новый - кодировку по умолчанию можно выставлять в настройках. "Искаропки" - дефолтная ANSI. Про вставку контрола - видел такой код, попробую найти. |
|
#64
|
|||
|
|||
|
Код:
unit UTF8;
interface
uses Classes;
type
TFormatterBase=class
public
procedure SaveToFile(AStream : TStream; AText : String); virtual; abstract;
function LoadFromFile(AStream : TStream) : String; virtual; abstract;
function IsFormat(AStream : TStream) : Boolean; virtual; abstract;
end;
TFormatterUTF8=class(TFormatterBase)
private
Function FormatToAscii(s:UTF8string):AnsiString;
Function AsciiToFormat(s:AnsiString):UTF8String;
public
procedure SaveToFile(AStream : TStream; AText : String); override;
function LoadFromFile(AStream : TStream) : String; override;
function IsFormat(AStream : TStream) : Boolean; override;
end;
implementation
{ TFormatterUTF8 }
function TFormatterUTF8.AsciiToFormat(s: AnsiString): UTF8String;
var
L: Integer;
Temp: UTF8String;
begin
Result := '';
if S = '' then Exit;
SetLength(Temp, Length(S) * 3);
L := UnicodeToUtf8(PChar(Temp), Length(Temp)+1, PWideChar(S), Length(S));
if L > 0 then
SetLength(Temp, L-1)
else
Temp := '';
Result := Temp;
end;
function TFormatterUTF8.FormatToAscii(s: UTF8string): AnsiString;
var
L: Integer;
Temp: WideString;
begin
Result := '';
if S = '' then Exit;
SetLength(Temp, Length(S));
L := Utf8ToUnicode(PWideChar(Temp), Length(Temp)+1, PChar(S), Length(S));
if L > 0 then
SetLength(Temp, L-1)
else
Temp := '';
Result := Temp;
end;
function TFormatterUTF8.IsFormat(AStream: TStream): Boolean;
var
b:cardinal;
const
sign=$BFBBEF;
begin
AStream.ReadBuffer(b,3);
Result:=sign=b;
end;
function TFormatterUTF8.LoadFromFile(AStream: TStream): String;
var
Str:TStringStream;
begin
if IsFormat(AStream) then
begin
Str:=TStringStream.Create(Result);
Str.CopyFrom(AStream,AStream.Size);
Result:=FormatToAscii(Result);
Str.Free;
end;
end;
procedure TFormatterUTF8.SaveToFile(AStream: TStream; AText: String);
begin
inherited;
end;
end.Пока нет сохранения в файл - там компилятор пишет Variable required |
|
#65
|
|||
|
|||
|
угу, скоординируйтесь с Фениксом и доделайте все классы.
|
|
#66
|
||||
|
||||
|
Цитата:
если никто не против, я пожалуй за аналог пэинта возьмусь, опыт есть, жаль исходников не осталось... |
|
#67
|
|||
|
|||
|
Aled, давай, начинай.
Только для общности интерфейса надо бы тебе теже иконки взять... Я ставил GlyFX. |
|
#68
|
||||
|
||||
|
Цитата:
|
|
#69
|
|||
|
|||
|
А ты поищи как следует. Есть не только фришные.
Хотя, скорее разговор идет о стиле выполнения иконок, а не об авторе... |
|
#70
|
||||
|
||||
|
Цитата:
насчёт моей работы, дня через 2-3 предоставлю рабочую версию, что запланировал: 1) подключение внешних инструментов (DLL, почти готово) 2) подключение внешних форматов изображений (опять DLL, работаю) 3) GDI+ (работает куда быстрее GDI уже есть)4) работа с несколькими изображениями (MDI, сейчас правда этим никого не удивишь) пока что всё |
|
#71
|
|||
|
|||
|
Кул! Только не забудь, что надо как минимум реализовать всесь функционал, который есть в стандартном пэйнте. Это просто минимум. Ну и плюс добавить что-то новое. Плюс добавить какие-нить удобства.
Да, если ты делаешь MDI, то озаботься открытием картинок в уже запущенной копии... Так, где Феникс со товарищи??? Я понимаю, конечно, что одному проще и быстрее сделать. Но, вроде, собирались делать командно... |
|
#72
|
||||
|
||||
|
/me временно выбыл, т.к. был занят некоторыми задачами...
![]() Я сейчас не в состоянии работать на делфи, так как ноут у меня "забрали" (собственно, он и не был моим - это ноут мамани ). Я уже купил себе персональный рабочий нетбук, но виндовс нормальный на нём не установишь... (гуглим Asus Eee PC 701 2G Surf). На след. неделе покупаю для него 32гб-карточку (SDHC), и вот тогда на вайне заведу делфи. А пока:1. AleD, не забудь про фичу, как в фотожабе - автовыделение цвета. 2. Imikle, в никсе столкнулся с хорошей утилитой, если её переписать в винде и включить в этот пакет, будет класс. Опишу позже, ибо щас уже наполовину сплю. Последний раз редактировалось PhoeniX, 22.07.2010 в 11:51. |
|
#73
|
|||
|
|||
|
OK.
Жду описания утилиты. Про Asus Eee PC 701 2G Surf. Ну, XP туда можно взгромоздить. Хотя памяти и маловато. А чего такую слабую купил??? |
|
#74
|
||||
|
||||
|
Просто для меня этот бук - самое то. И колонки хорошие, и память можно расширить (флешкой
), и дешёвый (что было критично)... Что мне ещё понравилось - даже с вайфаем и музыкой в наушниках, работает от батареи 5 с лишним часов (хотя, тут заслуга никсового авторегулятора мощности проца). Без него и с выключенным звуком - около 6 часов ![]() Теперь про утилиту. Вообще, туг сразу несколько функций оболочки XFCE, которую я поставил... Все знают, что в виндовс, чтоб сделать скриншот, надо после нажатия кнопки PrintScreen запускать или Paint, или другой граф. редактор, после чего вставлять туда изображение... xfce4-screenshoot позволяет сделать скрин всего экрана, активного окна или выделенной области, после чего либо сохранить, либо открыть скрин в любом редакторе. Что мне в ней не нравится: 1. Она автоматически НЕ прописывается на кнопке PrtSc, хотя это я решил через xfce4-hotkeys 2. Она открывает окно настроек, где можно выбирать, что скринить и куда сохранять (решил через параметры ком.строки). 3. Она сохраняет изображения только в формате png. Хотя я настроил на открытие скринов в редакторе fotoxx. Что я предлагаю - утилита, которую можно посадить (хуком) на (Alt+)PrtSc, и которая будет либо открывать окно с запросом, что делать со скрином, либо (по настройке) сохранять его в определённую папку в заданном формате, либо (опять же по настройке) открывать скрин в заданной программе. Кстати, что ещё можно - сделать кливиши Shift/Ctrl + PrtSc, чтоб выделять произвольную область экрана для скрина. Будет класс. Последний раз редактировалось PhoeniX, 22.07.2010 в 11:50. |
|
#75
|
|||
|
|||
|
Ну, Америки ты конечно не открыл. Таких утилит вагон и маленькая тележка, хотя, если сделаем свою, то будет неплохо. Как делать даже, в общем, знаю. Проблема всех подобных утилит - это "снятие" картинки из DirectX приложения. Для хохмы попробуй отскринить любой ролик в Windows Media Player'е... Вот сюда бы надо бы покопать. Если с этим разобраться, то будет клево (из видеопамяти что-ли читать картинку...).
|