Subversion Repositories Kolibri OS

Rev

Rev 5009 | Rev 6315 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5009 Rev 5010
Line 8... Line 8...
8
 
8
 
9
 
9
 
10
;---------
10
;---------
-
 
11
offs_m_or_i    equ  8 ;ᬥ饭¨¥ ¯ à ¬¥âà  'MM' ¨«¨ 'II' (Motorola, Intel)
11
offs_m_or_i    equ  8 ;ᬥ饭¨¥ ¯ à ¬¥âà  'MM' ¨«¨ 'II' (Motorola, Intel)
12
offs_id_gr     equ 10 ;ᬥ饭¨¥ id group
12
offs_id_gr     equ 10 ;ᬥ饭¨¥ id group
13
offs_id_gr_mak equ 12 ;ᬥ饭¨¥ id group ¯à®¨§¢®¤¨â¥«ï
13
offs_tag_0     equ  2 ;ᬥ饭¨¥ 0-£® ⥣ 
14
offs_tag_0     equ  2 ;ᬥ饭¨¥ 0-£® ⥣ 
14
tag_size       equ 12 ;à §¬¥à áâàãªâãàë ⥣ 
15
tag_size       equ 12 ;à §¬¥à áâàãªâãàë ⥣ 
15
;ä®à¬ âë ¤ ­­ëå
16
;ä®à¬ âë ¤ ­­ëå
Line 29... Line 30...
29
align 4
30
align 4
30
txt_dp db ': ',0
31
txt_dp db ': ',0
31
txt_zap db ', ',0
32
txt_zap db ', ',0
32
txt_div db '/',0
33
txt_div db '/',0
Line 33... Line -...
33
 
-
 
-
 
34
 
34
;
35
;§ £®«®¢®ª â ¡«¨æ á £à㯯 ¬¨ ⥣®¢
35
align 4
36
align 4
36
exif_tag_numbers:
37
exif_tag_numbers:
37
dd 0,      gr_0
38
dd 0,      gr_0    ;£à㯯  app1
38
dd 0x8769, gr_8769 ;Exif offset
39
dd 0x8769, gr_8769 ;Exif offset
39
dd 0xa005, gr_a005 ;Interop offset
40
dd 0xa005, gr_a005 ;Interop offset
-
 
41
dd 0x8825, gr_8825 ;GPS info
-
 
42
 
-
 
43
;£àã¯ë app2 (§¤¥áì ã ª ¦¤®£® ¯à®¨§¢®¤¨â¥«ï ª ¬¥à ᢮© ä®à¬ â ⥣®¢)
-
 
44
dw 0x927c ;app2 ¤«ï Nikon
-
 
45
db 'Ni'
-
 
46
dd gr_927c_Ni
-
 
47
 
-
 
48
dw 0x927c ;app2 ¤«ï Panasonic
-
 
49
db 'Pa'
-
 
50
dd gr_927c_Pa
-
 
51
 
-
 
52
dw 0x927c ;app2 ¤«ï Canon
-
 
53
db 'Ca'
40
dd 0x8825, gr_8825 ;GPS info
54
dd gr_927c_Ca
Line 41... Line 55...
41
.end:
55
.end:
42
 
56
 
43
align 4
57
align 4
Line 519... Line 533...
519
db 0x00,0x1e,'GPS differential',0
533
db 0x00,0x1e,'GPS differential',0
520
db 0x00,0x1f,'GPS h positioning error',0
534
db 0x00,0x1f,'GPS h positioning error',0
Line 521... Line 535...
521
 
535
 
Line -... Line 536...
-
 
536
dd 0
-
 
537
 
-
 
538
;¤ ­­ë¥ app2 ¤«ï Nikon
-
 
539
align 4
-
 
540
gr_927c_Ni:
-
 
541
db 0x00,0x01,'MakerNoteVersion',0
-
 
542
db 0x00,0x02,'ISO',0
-
 
543
db 0x00,0x03,'ColorMode',0
-
 
544
db 0x00,0x04,'Quality',0
-
 
545
db 0x00,0x05,'WhiteBalance',0
-
 
546
db 0x00,0x06,'Sharpness',0
-
 
547
db 0x00,0x07,'FocusMode',0
-
 
548
db 0x00,0x08,'FlashSetting',0
-
 
549
db 0x00,0x09,'FlashType',0
-
 
550
db 0x00,0x0b,'WhiteBalanceFineTune',0
-
 
551
db 0x00,0x0c,'WB_RBLevels',0
-
 
552
db 0x00,0x0d,'ProgramShift',0
-
 
553
db 0x00,0x0e,'ExposureDifference',0
-
 
554
db 0x00,0x0f,'ISOSelection',0
-
 
555
db 0x00,0x10,'DataDump',0
-
 
556
db 0x00,0x11,'PreviewIFD',0
-
 
557
db 0x00,0x12,'FlashExposureComp',0
-
 
558
db 0x00,0x13,'ISOSetting',0
-
 
559
db 0x00,0x14,'ColorBalanceA ',0
-
 
560
db 0x00,0x16,'ImageBoundary',0
-
 
561
db 0x00,0x17,'ExternalFlashExposureComp',0
-
 
562
db 0x00,0x18,'FlashExposureBracketValue',0
-
 
563
db 0x00,0x19,'ExposureBracketValue',0
-
 
564
db 0x00,0x1a,'ImageProcessing',0
-
 
565
db 0x00,0x1b,'CropHiSpeed',0
-
 
566
db 0x00,0x1c,'ExposureTuning',0
-
 
567
db 0x00,0x1d,'SerialNumber',0
-
 
568
db 0x00,0x1e,'ColorSpace',0
-
 
569
db 0x00,0x1f,'VRInfo',0
-
 
570
db 0x00,0x20,'ImageAuthentication',0
-
 
571
db 0x00,0x21,'FaceDetect',0
-
 
572
db 0x00,0x22,'ActiveD-Lighting',0
-
 
573
db 0x00,0x23,'PictureControlData',0
-
 
574
db 0x00,0x24,'WorldTime',0
-
 
575
db 0x00,0x25,'ISOInfo',0
-
 
576
db 0x00,0x2a,'VignetteControl',0
-
 
577
db 0x00,0x2b,'DistortInfo',0
-
 
578
db 0x00,0x2c,'UnknownInfo',0
-
 
579
db 0x00,0x32,'UnknownInfo2',0
-
 
580
db 0x00,0x35,'HDRInfo',0
-
 
581
db 0x00,0x39,'LocationInfo',0
-
 
582
db 0x00,0x3d,'BlackLevel',0
-
 
583
db 0x00,0x80,'ImageAdjustment',0
-
 
584
db 0x00,0x81,'ToneComp',0
-
 
585
db 0x00,0x82,'AuxiliaryLens',0
-
 
586
db 0x00,0x83,'LensType',0
-
 
587
db 0x00,0x84,'Lens',0
-
 
588
db 0x00,0x85,'ManualFocusDistance',0
-
 
589
db 0x00,0x86,'DigitalZoom',0
-
 
590
db 0x00,0x87,'FlashMode',0
-
 
591
db 0x00,0x88,'AFInfo',0
-
 
592
db 0x00,0x89,'ShootingMode',0
-
 
593
db 0x00,0x8b,'LensFStops',0
-
 
594
db 0x00,0x8c,'ContrastCurve',0
-
 
595
db 0x00,0x8d,'ColorHue',0
-
 
596
db 0x00,0x8f,'SceneMode',0
-
 
597
db 0x00,0x90,'LightSource',0
-
 
598
db 0x00,0x91,'ShotInfo',0
-
 
599
db 0x00,0x92,'HueAdjustment',0
-
 
600
db 0x00,0x93,'NEFCompression',0
-
 
601
db 0x00,0x94,'Saturation',0
-
 
602
db 0x00,0x95,'NoiseReduction',0
-
 
603
db 0x00,0x96,'NEFLinearizationTable',0
-
 
604
db 0x00,0x97,'ColorBalance',0
-
 
605
db 0x00,0x98,'LensData',0
-
 
606
db 0x00,0x99,'RawImageCenter',0
-
 
607
db 0x00,0x9a,'SensorPixelSize',0
-
 
608
db 0x00,0x9c,'SceneAssist',0
-
 
609
db 0x00,0x9e,'RetouchHistory',0
-
 
610
db 0x00,0xa0,'SerialNumber',0
-
 
611
db 0x00,0xa2,'ImageDataSize',0
-
 
612
db 0x00,0xa5,'ImageCount',0
-
 
613
db 0x00,0xa6,'DeletedImageCount',0
-
 
614
db 0x00,0xa7,'ShutterCount',0
-
 
615
db 0x00,0xa8,'FlashInfo',0
-
 
616
db 0x00,0xa9,'ImageOptimization',0
-
 
617
db 0x00,0xaa,'Saturation',0
-
 
618
db 0x00,0xab,'VariProgram',0
-
 
619
db 0x00,0xac,'ImageStabilization',0
-
 
620
db 0x00,0xad,'AFResponse',0
-
 
621
db 0x00,0xb0,'MultiExposure',0
-
 
622
db 0x00,0xb1,'HighISONoiseReduction',0
-
 
623
db 0x00,0xb3,'ToningEffect',0
-
 
624
db 0x00,0xb6,'PowerUpTime',0
-
 
625
db 0x00,0xb7,'AFInfo2',0
-
 
626
db 0x00,0xb8,'FileInfo',0
-
 
627
db 0x00,0xb9,'AFTune',0
-
 
628
db 0x00,0xbd,'PictureControlData',0
-
 
629
db 0x00,0xc3,'BarometerInfo',0
-
 
630
db 0x0e,0x00,'PrintIM',0
-
 
631
db 0x0e,0x01,'NikonCaptureData',0
-
 
632
db 0x0e,0x09,'NikonCaptureVersion',0
-
 
633
db 0x0e,0x0e,'NikonCaptureOffsets',0
-
 
634
db 0x0e,0x10,'NikonScanIFD',0
-
 
635
db 0x0e,0x13,'NikonCaptureEditVersions ',0
-
 
636
db 0x0e,0x1d,'NikonICCProfile',0
-
 
637
db 0x0e,0x1e,'NikonCaptureOutput',0
-
 
638
db 0x0e,0x22,'NEFBitDepth',0
-
 
639
 
-
 
640
dd 0
-
 
641
 
-
 
642
;¤ ­­ë¥ app2 ¤«ï Panasonic
-
 
643
align 4
-
 
644
gr_927c_Pa:
-
 
645
db 0x00,0x01,'ImageQuality',0
-
 
646
db 0x00,0x02,'FirmwareVersion',0
-
 
647
db 0x00,0x03,'WhiteBalance',0
-
 
648
db 0x00,0x07,'FocusMode',0
-
 
649
db 0x00,0x0f,'AFAreaMode',0
-
 
650
db 0x00,0x1a,'ImageStabilization',0
-
 
651
db 0x00,0x1c,'MacroMode',0
-
 
652
db 0x00,0x1f,'ShootingMode',0
-
 
653
db 0x00,0x20,'Audio',0
-
 
654
db 0x00,0x21,'DataDump',0
-
 
655
db 0x00,0x23,'WhiteBalanceBias',0
-
 
656
db 0x00,0x24,'FlashBias',0
-
 
657
db 0x00,0x25,'InternalSerialNumber',0
-
 
658
db 0x00,0x26,'PanasonicExifVersion',0
-
 
659
db 0x00,0x28,'ColorEffect',0
-
 
660
db 0x00,0x29,'TimeSincePowerOn',0
-
 
661
db 0x00,0x2a,'BurstMode',0
-
 
662
db 0x00,0x2b,'SequenceNumber',0
-
 
663
db 0x00,0x2c,'ContrastMode',0
-
 
664
db 0x00,0x2d,'NoiseReduction',0
-
 
665
db 0x00,0x2e,'SelfTimer',0
-
 
666
db 0x00,0x30,'Rotation',0
-
 
667
db 0x00,0x31,'AFAssistLamp',0
-
 
668
db 0x00,0x32,'ColorMode',0
-
 
669
db 0x00,0x33,'BabyAge',0
-
 
670
db 0x00,0x34,'OpticalZoomMode',0
-
 
671
db 0x00,0x35,'ConversionLens',0
-
 
672
db 0x00,0x36,'TravelDay',0
-
 
673
db 0x00,0x39,'Contrast',0
-
 
674
db 0x00,0x3a,'WorldTimeLocation',0
-
 
675
db 0x00,0x3b,'TextStamp',0
-
 
676
db 0x00,0x3c,'ProgramISO',0
-
 
677
db 0x00,0x3d,'AdvancedSceneType',0
-
 
678
db 0x00,0x3f,'FacesDetected',0
-
 
679
db 0x00,0x40,'Saturation',0
-
 
680
db 0x00,0x41,'Sharpness',0
-
 
681
db 0x00,0x42,'FilmMode',0
-
 
682
db 0x00,0x44,'ColorTempKelvin',0
-
 
683
db 0x00,0x45,'BracketSettings',0
-
 
684
db 0x00,0x46,'WBShiftAB',0
-
 
685
db 0x00,0x47,'WBShiftGM',0
-
 
686
db 0x00,0x48,'FlashCurtain',0
-
 
687
db 0x00,0x49,'LongExposureNoiseReduction',0
-
 
688
db 0x00,0x4b,'PanasonicImageWidth',0
-
 
689
db 0x00,0x4c,'PanasonicImageHeight',0
-
 
690
db 0x00,0x4d,'AFPointPosition',0
-
 
691
db 0x00,0x51,'LensType',0
-
 
692
db 0x00,0x52,'LensSerialNumber',0
-
 
693
db 0x00,0x53,'AccessoryType',0
-
 
694
db 0x00,0x54,'AccessorySerialNumber',0
-
 
695
db 0x00,0x59,'Transform',0
-
 
696
db 0x00,0x5d,'IntelligentExposure',0
-
 
697
db 0x00,0x60,'LensFirmwareVersion',0
-
 
698
db 0x00,0x61,'FaceRecInfo',0
-
 
699
db 0x00,0x62,'FlashWarning',0
-
 
700
db 0x00,0x63,'RecognizedFaceFlags',0
-
 
701
db 0x00,0x65,'Title',0
-
 
702
db 0x00,0x66,'BabyName',0
-
 
703
db 0x00,0x67,'Location',0
-
 
704
db 0x00,0x69,'Country',0
-
 
705
db 0x00,0x6b,'State',0
-
 
706
db 0x00,0x6d,'City',0
-
 
707
db 0x00,0x6f,'Landmark',0
-
 
708
db 0x00,0x70,'IntelligentResolution',0
-
 
709
db 0x00,0x77,'BurstSpeed',0
-
 
710
db 0x00,0x79,'IntelligentD-Range',0
-
 
711
db 0x00,0x7c,'ClearRetouch',0
-
 
712
db 0x00,0x86,'ManometerPressure',0
-
 
713
db 0x00,0x89,'PhotoStyle',0
-
 
714
db 0x00,0x8a,'ShadingCompensation',0
-
 
715
db 0x00,0x8c,'AccelerometerZ',0
-
 
716
db 0x00,0x8d,'AccelerometerX',0
-
 
717
db 0x00,0x8e,'AccelerometerY',0
-
 
718
db 0x00,0x8f,'CameraOrientation',0
-
 
719
db 0x00,0x90,'RollAngle',0
-
 
720
db 0x00,0x91,'PitchAngle',0
-
 
721
db 0x00,0x93,'SweepPanoramaDirection',0
-
 
722
db 0x00,0x94,'SweepPanoramaFieldOfView',0
-
 
723
db 0x00,0x96,'TimerRecording',0
-
 
724
db 0x00,0x9d,'InternalNDFilter',0
-
 
725
db 0x00,0x9e,'HDR',0
-
 
726
db 0x00,0x9f,'ShutterType',0
-
 
727
db 0x00,0xa3,'ClearRetouchValue',0
-
 
728
db 0x00,0xab,'TouchAE',0
-
 
729
db 0x0e,0x00,'PrintIM',0
-
 
730
db 0x80,0x00,'MakerNoteVersion',0
-
 
731
db 0x80,0x01,'SceneMode',0
-
 
732
db 0x80,0x04,'WBRedLevel',0
-
 
733
db 0x80,0x05,'WBGreenLevel',0
-
 
734
db 0x80,0x06,'WBBlueLevel',0
-
 
735
db 0x80,0x07,'FlashFired',0
-
 
736
db 0x80,0x08,'TextStamp',0
-
 
737
db 0x80,0x09,'TextStamp',0
-
 
738
db 0x80,0x10,'BabyAge',0
-
 
739
db 0x80,0x12,'Transform',0
-
 
740
 
-
 
741
dd 0
-
 
742
 
-
 
743
;¤ ­­ë¥ app2 ¤«ï Canon
-
 
744
align 4
-
 
745
gr_927c_Ca:
-
 
746
db 0x00,0x01,'CanonCameraSettings',0
-
 
747
db 0x00,0x02,'CanonFocalLength',0
-
 
748
db 0x00,0x03,'CanonFlashInfo?',0
-
 
749
db 0x00,0x04,'CanonShotInfo',0
-
 
750
db 0x00,0x05,'CanonPanorama',0
-
 
751
db 0x00,0x06,'CanonImageType',0
-
 
752
db 0x00,0x07,'CanonFirmwareVersion',0
-
 
753
db 0x00,0x08,'FileNumber',0
-
 
754
db 0x00,0x09,'OwnerName',0
-
 
755
db 0x00,0x0a,'UnknownD30',0
-
 
756
db 0x00,0x0c,'SerialNumber',0
-
 
757
db 0x00,0x0d,'CanonCameraInfo',0
-
 
758
db 0x00,0x0e,'CanonFileLength',0
-
 
759
db 0x00,0x0f,'CustomFunctions',0
-
 
760
db 0x00,0x10,'CanonModelID',0
-
 
761
db 0x00,0x11,'MovieInfo',0
-
 
762
db 0x00,0x12,'CanonAFInfo',0
-
 
763
db 0x00,0x13,'ThumbnailImageValidArea',0
-
 
764
db 0x00,0x15,'SerialNumberFormat',0
-
 
765
db 0x00,0x1a,'SuperMacro',0
-
 
766
db 0x00,0x1c,'DateStampMode',0
-
 
767
db 0x00,0x1d,'MyColors',0
-
 
768
db 0x00,0x1e,'FirmwareRevision',0
-
 
769
db 0x00,0x23,'Categories',0
-
 
770
db 0x00,0x24,'FaceDetect1',0
-
 
771
db 0x00,0x25,'FaceDetect2',0
-
 
772
db 0x00,0x26,'CanonAFInfo2',0
-
 
773
db 0x00,0x27,'ContrastInfo',0
-
 
774
db 0x00,0x28,'ImageUniqueID',0
-
 
775
db 0x00,0x2f,'FaceDetect3',0
-
 
776
db 0x00,0x35,'TimeInfo',0
-
 
777
db 0x00,0x81,'RawDataOffset',0
-
 
778
db 0x00,0x83,'OriginalDecisionDataOffset',0
-
 
779
db 0x00,0x90,'CustomFunctions1D',0
-
 
780
db 0x00,0x91,'PersonalFunctions',0
-
 
781
db 0x00,0x92,'PersonalFunctionValues',0
-
 
782
db 0x00,0x93,'CanonFileInfo',0
-
 
783
db 0x00,0x94,'AFPointsInFocus1D',0
-
 
784
db 0x00,0x95,'LensModel',0
-
 
785
db 0x00,0x96,'SerialInfo ',0
-
 
786
db 0x00,0x97,'DustRemovalData',0
-
 
787
db 0x00,0x98,'CropInfo',0
-
 
788
db 0x00,0x99,'CustomFunctions2',0
-
 
789
db 0x00,0x9a,'AspectInfo',0
-
 
790
db 0x00,0xa0,'ProcessingInfo',0
-
 
791
db 0x00,0xa1,'ToneCurveTable',0
-
 
792
db 0x00,0xa2,'SharpnessTable',0
-
 
793
db 0x00,0xa3,'SharpnessFreqTable',0
-
 
794
db 0x00,0xa4,'WhiteBalanceTable',0
-
 
795
db 0x00,0xa9,'ColorBalance',0
-
 
796
db 0x00,0xaa,'MeasuredColor',0
-
 
797
db 0x00,0xae,'ColorTemperature',0
-
 
798
db 0x00,0xb0,'CanonFlags',0
-
 
799
db 0x00,0xb1,'ModifiedInfo',0
-
 
800
db 0x00,0xb2,'ToneCurveMatching',0
-
 
801
db 0x00,0xb3,'WhiteBalanceMatching',0
-
 
802
db 0x00,0xb4,'ColorSpace',0
-
 
803
db 0x00,0xb6,'PreviewImageInfo',0
-
 
804
db 0x00,0xd0,'VRDOffset',0
-
 
805
db 0x00,0xe0,'SensorInfo',0
-
 
806
db 0x40,0x01,'ColorData',0
-
 
807
db 0x40,0x02,'CRWParam?',0
-
 
808
db 0x40,0x03,'ColorInfo',0
-
 
809
db 0x40,0x05,'Flavor?',0
-
 
810
db 0x40,0x08,'BlackLevel?',0
-
 
811
db 0x40,0x10,'CustomPictureStyleFileName',0
-
 
812
db 0x40,0x13,'AFMicroAdj',0
-
 
813
db 0x40,0x15,'VignettingCorr ',0
-
 
814
db 0x40,0x16,'VignettingCorr2',0
-
 
815
db 0x40,0x18,'LightingOpt',0
-
 
816
db 0x40,0x19,'LensInfo',0
-
 
817
db 0x40,0x20,'AmbienceInfo',0
-
 
818
db 0x40,0x24,'FilterInfo',0
-
 
819
 
522
dd 0
820
dd 0
523
 
821
 
524
;input:
822
;input:
525
; bof - 㪠§ â¥«ì ­  ­ ç «® ä ©« 
823
; bof - 㪠§ â¥«ì ­  ­ ç «® ä ©« 
526
; app1 - 㪠§ â¥«ì ¤«ï § ¯®«­¥­¨ï exif.app1
824
; app1 - 㪠§ â¥«ì ¤«ï § ¯®«­¥­¨ï exif.app1
Line 552... Line 850...
552
	xor ebx,ebx
850
	xor ebx,ebx
553
	cmp word[eax+10],'II'
851
	cmp word[eax+10],'II'
554
	je @f
852
	je @f
555
		inc ebx ;if 'MM' edx=1
853
		inc ebx ;if 'MM' edx=1
556
	@@:
854
	@@:
557
	mov [edi+offs_m_or_i],ebx
-
 
558
	;¯¨è¥¬ ®¤­®© ª®¬ ­¤®© ¢ dword[edi+offs_m_or_i]
-
 
559
	;¢ ¬« ¤è¨¥ 2 ¡ ©â  ᯮᮡ ¢ëà ¢­¨¢ ­¨ï ç¨á¥«
855
	mov word[edi+offs_m_or_i],bx ;ᯮᮡ ¢ëà ¢­¨¢ ­¨ï ç¨á¥«
560
	;¢ áâ à訥 2 ¡ ©â  id £àã¯ë, ª®â®àë© ¢á¥£¤  0 ¤«ï app1
856
	mov dword[edi+offs_id_gr],0 ;id £àã¯ë ¨ ¯à®¨§¢®¤¨â¥«ï, ª®â®àë© ¢á¥£¤  0 ¤«ï app1
561
	add eax,18
857
	add eax,18
562
	mov [edi],eax
858
	mov [edi],eax
563
	sub eax,8
859
	sub eax,8
564
	mov [edi+4],eax
860
	mov [edi+4],eax
Line 671... Line 967...
671
		m2m dword[edi+4],dword[eax+4]
967
		m2m dword[edi+4],dword[eax+4]
672
		ror edx,16
968
		ror edx,16
673
		mov dx,word[c_tag]
969
		mov dx,word[c_tag]
674
		ror edx,16
970
		ror edx,16
675
		mov dword[edi+offs_m_or_i],edx
971
		mov dword[edi+offs_m_or_i],edx
-
 
972
		m2m word[edi+offs_id_gr_mak],word[eax+offs_id_gr_mak]
Line 676... Line 973...
676
 
973
 
677
	jmp .end_f
974
	jmp .end_f
678
	.no_found:
975
	.no_found:
679
		mov dword[edi],0
976
		mov dword[edi],0
Line 754... Line 1051...
754
	.suport:
1051
	.suport:
755
	;­ å®¤¨¬ ⥣ 0x8769 (à áè¨à¥­­ë¥ ¤ ­­ë¥ ¯® Exif)
1052
	;­ å®¤¨¬ ⥣ 0x8769 (à áè¨à¥­­ë¥ ¤ ­­ë¥ ¯® Exif)
756
	stdcall exif_get_app1_child, eax,edi,0x8769
1053
	stdcall exif_get_app1_child, eax,edi,0x8769
757
	cmp dword[edi],0
1054
	cmp dword[edi],0
758
	je .no_suport
1055
	je .no_suport
759
	;­ å®¤¨¬ ⥣ 0xa005 (¤ ­­ë¥ Maker ¯® ª ¬¥à¥)
1056
	;­ å®¤¨¬ ⥣ 0x927c (¤ ­­ë¥ Maker ¯® ª ¬¥à¥)
760
	stdcall exif_get_app1_child, edi,edi, 0x927c
1057
	stdcall exif_get_app1_child, edi,edi, 0x927c
761
	cmp dword[edi],0
1058
	cmp dword[edi],0
762
	je .no_suport
1059
	je .no_suport
Line 763... Line 1060...
763
 
1060
 
764
	cmp dword[ebx],'NIKO'
1061
	cmp dword[ebx],'NIKO'
-
 
1062
	jne @f
765
	jne @f
1063
		;for Nikon
-
 
1064
		add dword[edi],18
-
 
1065
		mov eax,dword[edi]
-
 
1066
		sub eax,8
-
 
1067
		mov dword[edi+4],eax
766
		add dword[edi],18 ;for Nikon
1068
		mov word[edi+offs_id_gr_mak],'Ni'
767
	@@:
1069
	@@:
768
	cmp dword[ebx],'Pana'
1070
	cmp dword[ebx],'Pana'
-
 
1071
	jne @f
769
	jne @f
1072
		;for Panasonic
-
 
1073
		add dword[edi],12
-
 
1074
		mov word[edi+offs_id_gr_mak],'Pa'
-
 
1075
	@@:
-
 
1076
	cmp dword[ebx],'Cano'
-
 
1077
	jne @f
-
 
1078
		;for Canon
770
		add dword[edi],12 ;for Panasonic
1079
		mov word[edi+offs_id_gr_mak],'Ca'
Line 771... Line 1080...
771
	@@:
1080
	@@:
772
 
1081
 
773
	jmp @f
1082
	jmp @f
Line 788... Line 1097...
788
	push exif_tag_numbers
1097
	push exif_tag_numbers
789
	pop esi
1098
	pop esi
Line 790... Line 1099...
790
 
1099
 
791
	;¯®¨áª â ¡«¨æë ¤«ï £à㯯ë ⥣®¢
1100
	;¯®¨áª â ¡«¨æë ¤«ï £à㯯ë ⥣®¢
792
	mov ebx,[app1]
1101
	mov ebx,[app1]
793
	mov bx,word[ebx+offs_id_gr] ;¡¥à¥¬ ¨¤¥­â¨ä¨ª â®à £à㯯ë ⥣®¢
1102
	mov ebx,dword[ebx+offs_id_gr] ;¡¥à¥¬ ¨¤¥­â¨ä¨ª â®à £à㯯ë ⥣®¢
794
	@@:
1103
	@@:
795
		cmp word[esi],bx
1104
		cmp dword[esi],ebx
796
		je .set_table
1105
		je .set_table
797
		add esi,8
1106
		add esi,8
798
		cmp esi,exif_tag_numbers.end
1107
		cmp esi,exif_tag_numbers.end
799
		jge .tag_unknown ;⥣ ­¥ ®¯®§­ ­ (­¥ ­ ©¤¥­  â ¡«¨æ  £à㯯ë ⥣®¢)
1108
		jge .tag_unknown ;⥣ ­¥ ®¯®§­ ­ (­¥ ­ ©¤¥­  â ¡«¨æ  £à㯯ë ⥣®¢)
Line 862... Line 1171...
862
			;¥á«¨ 1 ®¤­® ¡ ©â®¢®¥ ç¨á«®
1171
			;¥á«¨ 1 ®¤­® ¡ ©â®¢®¥ ç¨á«®
863
			movzx ebx,byte[eax+8]
1172
			movzx ebx,byte[eax+8]
864
			stdcall str_len,edi
1173
			stdcall str_len,edi
865
			add edi,eax
1174
			add edi,eax
866
			mov eax,ebx
1175
			mov eax,ebx
867
			call convert_int_to_str ;[t_max]
1176
			stdcall convert_int_to_str, [t_max]
868
			bt edx,1
1177
			bt edx,1
869
			jnc .end_f
1178
			jnc .end_f
870
			@@:
1179
			@@:
871
				;¥á«¨ ®â 2 ¤® 4 ®¤­® ¡ ©â®¢ëå ç¨á¥«
1180
				;¥á«¨ ®â 2 ¤® 4 ®¤­® ¡ ©â®¢ëå ç¨á¥«
872
				dec dh
1181
				dec dh
Line 875... Line 1184...
875
				shr ecx,8
1184
				shr ecx,8
876
				stdcall str_n_cat,edi,txt_zap,[t_max]
1185
				stdcall str_n_cat,edi,txt_zap,[t_max]
877
				stdcall str_len,edi
1186
				stdcall str_len,edi
878
				add edi,eax
1187
				add edi,eax
879
				movzx eax,cl
1188
				movzx eax,cl
880
				call convert_int_to_str ;[t_max]
1189
				stdcall convert_int_to_str, [t_max]
881
				jmp @b
1190
				jmp @b
882
		.over4b_01:
1191
		.over4b_01:
883
			;...
1192
			;...
884
		jmp .end_f
1193
		jmp .end_f
885
	.tag_01:
1194
	.tag_01:
Line 942... Line 1251...
942
				ror bx,8
1251
				ror bx,8
943
			@@:
1252
			@@:
944
			stdcall str_len,edi
1253
			stdcall str_len,edi
945
			add edi,eax
1254
			add edi,eax
946
			mov eax,ebx
1255
			mov eax,ebx
947
			call convert_int_to_str ;[t_max]
1256
			stdcall convert_int_to_str, [t_max]
948
			bt edx,1 ;array ?
1257
			bt edx,1 ;array ?
949
			jnc .end_f
1258
			jnc .end_f
950
			;¤®¡ ¢«ï¥¬ 2-¥ ç¨á«®
1259
			;¤®¡ ¢«ï¥¬ 2-¥ ç¨á«®
951
			stdcall str_n_cat,edi,txt_zap,[t_max]
1260
			stdcall str_n_cat,edi,txt_zap,[t_max]
952
			stdcall str_len,edi
1261
			stdcall str_len,edi
953
			add edi,eax
1262
			add edi,eax
954
			mov eax,ecx
1263
			mov eax,ecx
955
			call convert_int_to_str ;[t_max]
1264
			stdcall convert_int_to_str, [t_max]
956
		.over4b_03:
-
 
957
			;...
-
 
958
		jmp .end_f
1265
			jmp .end_f
-
 
1266
		.over4b_03:
-
 
1267
			mov ecx,[t_max]
-
 
1268
			mov esi,dword[eax+8]
-
 
1269
			bt edx,0
-
 
1270
			jnc @f
-
 
1271
				ror si,8
-
 
1272
				ror esi,16
-
 
1273
				ror si,8
-
 
1274
			@@:
-
 
1275
			mov eax,[app1]
-
 
1276
			mov eax,[eax+4]
-
 
1277
			add esi,eax
-
 
1278
			
-
 
1279
			;¡¥à¥¬ ç¨á«®
-
 
1280
			.array_03:
-
 
1281
			stdcall str_len,edi
-
 
1282
			cmp ecx,eax
-
 
1283
			jle .end_f ;¥á«¨ ­¥ 墠⨫® áâப¨
-
 
1284
			add edi,eax
-
 
1285
			sub ecx,eax
-
 
1286
			movzx eax,word[esi]
-
 
1287
			bt edx,0
-
 
1288
			jnc @f
-
 
1289
				ror ax,8
-
 
1290
			@@:
-
 
1291
			stdcall convert_int_to_str,ecx
-
 
1292
 
-
 
1293
			dec ebx
-
 
1294
			cmp ebx,0
-
 
1295
			je .end_f
-
 
1296
 
-
 
1297
			;¤®¡ ¢«ï¥¬ § ¯ïâãî
-
 
1298
			stdcall str_n_cat,edi,txt_zap,ecx
-
 
1299
			add esi,2
-
 
1300
			jmp .array_03
959
	.tag_03:
1301
	.tag_03:
Line 960... Line 1302...
960
 
1302
 
961
	mov bx,tag_format_ui4b
1303
	mov bx,tag_format_ui4b
962
	bt edx,0
1304
	bt edx,0
Line 978... Line 1320...
978
				ror bx,8
1320
				ror bx,8
979
			@@:
1321
			@@:
980
			stdcall str_len,edi
1322
			stdcall str_len,edi
981
			add edi,eax
1323
			add edi,eax
982
			mov eax,ebx
1324
			mov eax,ebx
983
			call convert_int_to_str ;[t_max]
1325
			stdcall convert_int_to_str, [t_max]
984
		.over4b_04:
1326
		.over4b_04:
985
			;...
1327
			;...
986
		jmp .end_f
1328
		jmp .end_f
987
	.tag_04:
1329
	.tag_04:
Line 1014... Line 1356...
1014
			jnc @f
1356
			jnc @f
1015
				ror ax,8
1357
				ror ax,8
1016
				ror eax,16
1358
				ror eax,16
1017
				ror ax,8
1359
				ror ax,8
1018
			@@:
1360
			@@:
1019
			call convert_int_to_str ;áâ ¢¨¬ 1-¥ ç¨á«®
1361
			stdcall convert_int_to_str, [t_max] ;áâ ¢¨¬ 1-¥ ç¨á«®
1020
			stdcall str_n_cat,edi,txt_div,[t_max] ;áâ ¢¨¬ §­ ª ¤¥«¥­¨ï
1362
			stdcall str_n_cat,edi,txt_div,[t_max] ;áâ ¢¨¬ §­ ª ¤¥«¥­¨ï
1021
			stdcall str_len,edi
1363
			stdcall str_len,edi
1022
			add edi,eax
1364
			add edi,eax
1023
			mov eax,[ebx+4]
1365
			mov eax,[ebx+4]
1024
			bt edx,0
1366
			bt edx,0
1025
			jnc @f
1367
			jnc @f
1026
				ror ax,8
1368
				ror ax,8
1027
				ror eax,16
1369
				ror eax,16
1028
				ror ax,8
1370
				ror ax,8
1029
			@@:
1371
			@@:
1030
			call convert_int_to_str ;áâ ¢¨¬ 2-¥ ç¨á«®
1372
			stdcall convert_int_to_str, [t_max] ;áâ ¢¨¬ 2-¥ ç¨á«®
1031
		;.over4b_05:
1373
		;.over4b_05:
1032
			;...
1374
			;...
1033
		jmp .end_f
1375
		jmp .end_f
1034
	.tag_05:
1376
	.tag_05:
Line 1040... Line 1382...
1040
	@@:
1382
	@@:
1041
	cmp word[eax+2],bx
1383
	cmp word[eax+2],bx
1042
	jne .tag_08
1384
	jne .tag_08
1043
		stdcall str_n_cat,edi,txt_dp,[t_max]
1385
		stdcall str_n_cat,edi,txt_dp,[t_max]
1044
		call get_tag_data_size
1386
		call get_tag_data_size
1045
		cmp ebx,1
1387
		cmp ebx,2
1046
		jg .over4b_08
1388
		jg .over4b_08
-
 
1389
		jne @f
-
 
1390
			;¥á«¨ ¤¢  2 ¡ ©â®¢ëå ç¨á« 
-
 
1391
			or edx,2 ;array data
-
 
1392
			movzx ecx,word[eax+10]
-
 
1393
			bt edx,0
-
 
1394
			jnc @f
-
 
1395
				ror cx,8
-
 
1396
			@@:		
1047
			;¥á«¨ ®¤­® 2 ¡ ©â®¢®¥ ç¨á«®
1397
			;¥á«¨ ®¤­® 2 ¡ ©â®¢®¥ ç¨á«®
1048
			movzx ebx,word[eax+8]
1398
			movzx ebx,word[eax+8]
1049
			bt edx,0
1399
			bt edx,0
1050
			jnc @f
1400
			jnc @f
1051
				ror bx,8
1401
				ror bx,8
Line 1058... Line 1408...
1058
				inc edi
1408
				inc edi
1059
				neg bx
1409
				neg bx
1060
				inc bx
1410
				inc bx
1061
			@@:
1411
			@@:
1062
			mov eax,ebx
1412
			mov eax,ebx
1063
			call convert_int_to_str ;[t_max]
1413
			stdcall convert_int_to_str, [t_max]
-
 
1414
			bt edx,1 ;array ?
-
 
1415
			jnc .end_f
-
 
1416
			;¤®¡ ¢«ï¥¬ 2-¥ ç¨á«®
-
 
1417
			stdcall str_n_cat,edi,txt_zap,[t_max]
-
 
1418
			stdcall str_len,edi
-
 
1419
			add edi,eax
-
 
1420
			bt bx,15
-
 
1421
			jnc @f
-
 
1422
				mov byte[edi],'-'
-
 
1423
				inc edi
1064
		.over4b_08:
1424
				neg bx
-
 
1425
				inc bx
1065
			;...
1426
			@@:
-
 
1427
			mov eax,ecx
-
 
1428
			stdcall convert_int_to_str, [t_max]
1066
		jmp .end_f
1429
			jmp .end_f
-
 
1430
		.over4b_08:
-
 
1431
			mov ecx,[t_max]
-
 
1432
			mov esi,dword[eax+8]
-
 
1433
			bt edx,0
-
 
1434
			jnc @f
-
 
1435
				ror si,8
-
 
1436
				ror esi,16
-
 
1437
				ror si,8
-
 
1438
			@@:
-
 
1439
			mov eax,[app1]
-
 
1440
			mov eax,[eax+4]
-
 
1441
			add esi,eax
-
 
1442
			
-
 
1443
			;¡¥à¥¬ ç¨á«®
-
 
1444
			.array_08:
-
 
1445
			stdcall str_len,edi
-
 
1446
			cmp ecx,eax
-
 
1447
			jle .end_f ;¥á«¨ ­¥ 墠⨫® áâப¨
-
 
1448
			add edi,eax
-
 
1449
			sub ecx,eax
-
 
1450
			movzx eax,word[esi]
-
 
1451
			bt edx,0
-
 
1452
			jnc @f
-
 
1453
				ror ax,8
-
 
1454
			@@:
-
 
1455
			;ᬮâਬ ­  §­ ª +|-
-
 
1456
			bt ax,15
-
 
1457
			jnc @f
-
 
1458
				mov byte[edi],'-'
-
 
1459
				inc edi
-
 
1460
				neg ax
-
 
1461
				inc ax
-
 
1462
			@@:
-
 
1463
			stdcall convert_int_to_str,ecx
-
 
1464
 
-
 
1465
			dec ebx
-
 
1466
			cmp ebx,0
-
 
1467
			je .end_f
-
 
1468
 
-
 
1469
			;¤®¡ ¢«ï¥¬ § ¯ïâãî
-
 
1470
			stdcall str_n_cat,edi,txt_zap,ecx
-
 
1471
			add esi,2
-
 
1472
			jmp .array_08
1067
	.tag_08:
1473
	.tag_08:
Line 1068... Line 1474...
1068
 
1474
 
1069
	mov bx,tag_format_si4b
1475
	mov bx,tag_format_si4b
1070
	bt edx,0
1476
	bt edx,0
Line 1093... Line 1499...
1093
				inc edi
1499
				inc edi
1094
				neg ebx
1500
				neg ebx
1095
				inc ebx
1501
				inc ebx
1096
			@@:
1502
			@@:
1097
			mov eax,ebx
1503
			mov eax,ebx
1098
			call convert_int_to_str ;[t_max]
1504
			stdcall convert_int_to_str, [t_max]
1099
		.over4b_09:
1505
		.over4b_09:
1100
			;...
1506
			;...
1101
		jmp .end_f
1507
		jmp .end_f
1102
	.tag_09:
1508
	.tag_09:
Line 1174... Line 1580...
1174
	popad
1580
	popad
1175
	ret
1581
	ret
1176
endp
1582
endp
Line 1177... Line 1583...
1177
 
1583
 
1178
;input:
1584
;input:
1179
; eax = value
1585
; eax - ç¨á«®
-
 
1586
; edi - ¡ãä¥à ¤«ï áâப¨
1180
; edi = string buffer
1587
; len - ¤«¨­­  ¡ãä¥à 
1181
;output:
1588
;output:
1182
align 4
1589
align 4
1183
convert_int_to_str:
1590
proc convert_int_to_str, len:dword
1184
	pushad
1591
pushad
1185
		mov dword[edi+1],0
1592
	mov esi,[len]
-
 
1593
	add esi,edi
1186
		mov dword[edi+5],0
1594
	dec esi
1187
		call .str
1595
	call .str
1188
	popad
1596
popad
-
 
1597
	ret
Line 1189... Line 1598...
1189
	ret
1598
endp
1190
 
1599
 
1191
align 4
1600
align 4
1192
.str:
1601
.str:
Line 1199... Line 1608...
1199
		push edx     ;¯®«®¦¨âì ¢ á⥪
1608
		push edx  ;¯®«®¦¨âì ¢ á⥪
1200
		;dec edi             ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1609
		;dec edi  ;ᬥ饭¨¥ ­¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®­æ  áâப¨
1201
		call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1610
		call .str ;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
1202
		pop eax
1611
		pop eax
1203
	@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
1612
	@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
-
 
1613
	cmp edi,esi
-
 
1614
	jge @f
1204
	or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥
1615
		or al,0x30 ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥
1205
	stosb	    ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
1616
		stosb      ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
-
 
1617
		mov byte[edi],0 ;¢ ª®­¥æ áâப¨ áâ ¢¨¬ 0, çâ®-¡ë ­¥ ¢ë« §¨« ¬ãá®à
-
 
1618
	@@:
1206
	ret	      ;¢¥à­ãâìáï ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
1619
	ret        ;¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
Line 1207... Line 1620...
1207
 
1620
 
1208
 
1621